嵌入式学习小组
直播中

李开心

7年用户 219经验值
私信 关注

请问为什么PDMA发送的数据被替换的现象会发生?

为什么PDMA发送的数据被替换的现象会发生?

回帖(1)

宋阳

2020-12-21 11:33:55
如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 当源地址或目的地址被设置为数组起始地址时,用户必须检查数组起始地址是否为单词对齐。

在下面的示例中,缓冲区的起始地址是0x2000_0039的。 由于内存的排序是由编译器决定的,所以可能会出现非字对齐的情况。

未签字符test2;
未签字符test1;
未签字符缓冲区[100];

如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 *当PDMA源地址或目标地址设置为缓冲区(0x2000_0039)时,PDMA硬件将设置为Word访问(0x2000_0038)。


如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 当PDMA源地址或目标地址被设置为缓冲区(0x2000_003C)时,有单词被对齐。 如果使用带有UART的PDMA发送数据,则要发送的数据将从0X03开始。 *数组缓冲区的起始地址将以4个字节排列和对齐。
如果内存没有字对齐,则可以使用对齐(4),以便数组可以与内存中的字节对齐。


如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 未指定的字符缓冲区[100]__属性__(对齐(4));
如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。
如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。  

如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 *当PDMA源地址或目标地址设置为缓冲区(0x2000_0039)时,PDMA硬件将设置为Word访问(0x2000_0038)。

When the PDMA source or destination address is set as buffer (0x2000_003C), there are words being aligned. If using the PDMA with UART to send data, the data to be sent will start from 0X03.如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 *当PDMA源地址或目标地址设置为缓冲区(0x2000_0039)时,PDMA硬件将设置为Word访问(0x2000_0038)。
如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 *当PDMA源地址或目标地址设置为缓冲区(0x2000_0039)时,PDMA硬件将设置为Word访问(0x2000_0038)。
如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。 *当PDMA源地址或目标地址设置为缓冲区(0x2000_0039)时,PDMA硬件将设置为Word访问(0x2000_0038)。

如果使用带有UART的PDMA发送数据,则要发送的数据将是0x01,0x03.,而不是从0X03开始。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分