HC32F460的DMA串口发送为啥每次只能发一个字节?
如题,我碰到了一个奇怪的问题。在用DMA做定时串口数据发送时,本意是想每次传输8个字节一帧的数据,但是实际却是每次只发送一个字节,一帧的8个字节数据实际分了8次才收到!我的DMA设置代码如下:/* Initialize DMA. */
MEM_ZERO_STRUCT(stcDmaInit);//
stcDmaInit.u16BlockSize = 8u; /* 1 block *///设置每次DMA传输的数据量,即块的大小
stcDmaInit.u16TransferCnt = 0; //传输次数。填0表示无限次传输
stcDmaInit.u32DesAddr = (uint32_t)(&M4_USART3->DR);
stcDmaInit.u32SrcAddr = (uint32_t)MSG; /* 源地址数组. */
stcDmaInit.u16DesRptSize=0; //目标地址固定
stcDmaInit.u16SrcRptSize = 8; //源地址重复区域为8个字节
stcDmaInit.stcDmaChCfg.enDesInc = AddressFix;
stcDmaInit.stcDmaChCfg.enSrcInc = AddressIncrease;/* Set destination address mode. *///
stcDmaInit.stcDmaChCfg.enLlpEn = Disable;
stcDmaInit.stcDmaChCfg.enDesRptEn = Disable;
stcDmaInit.stcDmaChCfg.enSrcRptEn = Enable;
stcDmaInit.stcDmaChCfg.enTrnWidth = Dma8Bit; /* Set data width 8bit. */
DMA_InitChannel(M4_DMA1, DmaCh0, &stcDmaInit);
按照用户手册的说法,BLOCKSIZE的设置决定了每次发送多少个数据。那我这个配置为何不对呢?请高手指教! 这是按照例程弄的么 littlelida 发表于 2022-9-3 14:26
这是按照例程弄的么
嗯,参考官方程序写法。我的本意是用定时器来驱动DMA每0.5S发送一帧8个字节数据。但是实际程序写起来才发现不管我咋设置,都只能做到每0.5S发送一个字节数据,要4S才能发完全部8个字节。这不是我想要的啊!求助如何每次触发DMA都能发8个字节呢? u16BlockSize这个参数按照手册上的说法,难道不是指每次发送数据量吗? 怎么回事?难道不是每次发一个字节么 串口一次是发送一个字节啊 等结果~ 不是一次发一个字节吗? 你好我也在做HC32F460DMA串口通信可以交流一下吗?我的qq2845440409 官方例程肯定没问题的
页:
[1]