Häufig gestellte Fragen

常見問答

為什麼PDMA送出的資料內容,會發生位移現象?  日期:2016-06-27

當來源或目標的位址設爲陣列起始位址時,使用者必須檢查陣列起始位址是否為字節(word)對齊。

以下例buffer起始位址為0x2000_0039,因記憶體排序為編譯器決定,會有非字節對齊的情況發生。

unsigned int test2;

unsigned char test1;

unsigned char buffer[100];

 

 

當PDMA來源或目標的位址設定成buffer(0x2000_0039),PDMA的硬體設定會以字節存取(0x2000_0038)。

假設使用PDMA加UART傳送資料時,將會送出0x01, 0x03…,而不是從0X03開始傳送。

針對記憶體放置為非對齊字節的狀況,可以使用aligned (4),讓陣列對齊記憶體中的字節

unsigned char buffer[100] __attribute__ ((aligned (4)));

陣列buffer的起始位址會以4個byte的方式對齊擺放。

 

當PDMA來源或目標的位址設定成buffer(0x2000_003C),已有字節對齊。假設使用PDMA加UART傳送資料時,將會從0X03開始傳送。

 

 

 

產品: 微控制器 ,Arm Cortex-M0 微控制器 ,M051 系列 ,M0518 系列 ,M0519 系列 ,Nano100 / 102 系列 ,Nano110 / 112 LCD 系列 ,Nano120 USB 系列 ,Nano130 USB+LCD 系列 ,NUC029 系列 ,NUC100 / 200 系列 ,NUC120 / 122 / 123 / 220 USB 系列 ,NUC130 / 230 CAN 系列 ,NUC131/NUC1311 CAN 系列 ,NUC140 / 240 USB+CAN 系列 ,Arm Cortex-M4 微控制器 ,M451 Base 系列 ,M451M 系列 ,M452 USB 系列 ,M453 CAN 系列 ,NUC442 / 472 系列 ,NUC505 系列
應用:
功能: Peripherals,Connectivity,DMA (PDMA)
本網站使用cookie作為與網站互動時識別瀏覽器之用,瀏覽本網站即表示您同意本網站對cookie的使用及相關隱私權政策
OK