打印
[KungFu32位 MCU]

kf32a156MQV串口DMA接收,获取DMA通道的当前剩余数据量问题

[复制链接]
2501|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenkun1234|  楼主 | 2024-8-19 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口DMA接收时,uint16_t DMA_Get_Transfer_Number_Remain (DMA_SFRmap* DMAx, uint32_t Channel)获取DMA通道的当前剩余数据量,这个剩余量无法复位,我看例程里面也没用这个  是不是不能用???比如我设置100个字节的串口DMA接收容量,我第一次接收到40个字节以后产生串口空闲中断 可以通过100-DMA_Get_Transfer_Number_Remain 来获取第一帧数据的个数,然后将其复位,但是获取DMA通道的当前剩余数据量还是之前的个数没有复位,下一帧数据接收时用100 - DMA_Get_Transfer_Number_Remain 就不是正确的数据个数,,是不能用uint16_t DMA_Get_Transfer_Number_Remain (DMA_SFRmap* DMAx, uint32_t Channel)这个函数吗????

使用特权

评论回复
沙发
钟爱柳州| | 2024-8-20 10:47 | 只看该作者
DMA_Get_Transfer_Number_Remain函数可以用,不过DMAx_NCTy DMAx 通道 y 当前剩余数据寄存器是只读的,不能直接给寄存器赋值复位,可以使用DMA_Channel_Enable函数,先关闭使能再打开使能的方式复位NCT,如下:
DMA_Channel_Enable(DMAx, channal, DISABLE);
DMA_Channel_Enable(DMAx, channal, ENABLE);

使用特权

评论回复
板凳
chenkun1234|  楼主 | 2024-8-20 11:12 | 只看该作者
钟爱柳州 发表于 2024-8-20 10:47
DMA_Get_Transfer_Number_Remain函数可以用,不过DMAx_NCTy DMAx 通道 y 当前剩余数据寄存器是只读的,不能 ...

DMA_Channel_Enable(DMAx, channal, DISABLE);
DMA_Channel_Enable(DMAx, channal, ENABLE);
在空闲中断里面加了上面这两句   还是没有复位DMAx->NCT的值     还是只有第一帧时个数正确  还是没有复位

使用特权

评论回复
地板
钟爱柳州| | 2024-8-20 13:47 | 只看该作者
chenkun1234 发表于 2024-8-20 11:12
DMA_Channel_Enable(DMAx, channal, DISABLE);
DMA_Channel_Enable(DMAx, channal, ENABLE);
在空闲中断 ...

论坛上交流太慢,看一下私信联系我

使用特权

评论回复
5
chenkun1234|  楼主 | 2024-8-20 18:10 | 只看该作者
A04版本才行

使用特权

评论回复
6
cooldog123pp| | 2024-8-21 11:43 | 只看该作者
kf32a156MQV应该会是芯旺微的芯片吧,可以直接找他们FAE应该能更快解决问题。

使用特权

评论回复
7
chenkun1234|  楼主 | 2024-8-21 14:48 | 只看该作者
cooldog123pp 发表于 2024-8-21 11:43
kf32a156MQV应该会是芯旺微的芯片吧,可以直接找他们FAE应该能更快解决问题。 ...

用的就芯片   要用最新出的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

9

帖子

0

粉丝