Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
请问,YTM32BHA01 使用串口DMA时,不能使用串口的空闲中断吗 还有这个函数是不是获取不了DMA模式下串口仍需要接收的字节数。如果获取不了的话,我应该通过什么方式来获取到DMA模式下接收了多少字节的数据
可以参考一下 YCT Demo,LINFlexD 下有个 Linflexd_Uart_Idle_Interrupt_Demo
Diga 参考过了 它那个例程就是用上面的那个函数获取的接收数据的字节数,它函数注释里就写了 在DMA下不准,我DMA模式下试了那个函数不咋好用
应该还行啊,不会不准的
Diga 在 串口DMA 中说:
请问你有测试过吗 我这边试了试还是不行啊
我看了下代码,这个函数就是直接读取 DMA 的寄存器,检查DMA 的剩余次数。这个如果再不准,就没法子了
BJX LinFlexD用作串口且使用DMA时不支持空闲中断。
我想再问几个问题 1、 请问,我在串口状态结构里面看这个注释说,空闲超时状态仅支持中断模式,DMA是不是就不能用这个功能了? 2、 我在测试时发现 我的缓冲区字节数为8,我的程序逻辑是,接收到上位机的数据就把数据返回给上位机,但现象是 只有发送的数据量大于等于8 它才会返回数据,要不然就等待缓冲区填满,然后用rtt打印它那个传输中仍需要接收的字节数就一直为0
Frank 好的 我看了注释后就没有尝试DMA+空闲中断
你这个只有接收完成,或者超时,才会去读取剩余多少数据。 这个接收完成,应该是你预设了一个接收长度,应该是 8 ,如果收到 8 个数据,才会进这个接收完成回调
Diga 是这样的,但在DMA模式下不能用空闲中断,所以那个超时事件不能用,有没有其它方法可以在DMA状态下接收不定长数据
可以软件定时去调用这个函数,比如10ms 一次,当连续几次,获取的剩余个数都未变化时,说明已经接收完成。 或者用中断。。
好的 谢谢你的思路
Frank 请问Mcal支持吗,我看Mcal似乎没有这部分注释,但是在yct工具里面在启动DMA后也不能勾选空闲中断
gaoSheng, HA01上串口的Idel中断和同时使用DMA是互斥的,机制上不能共存,不是软件不支持的问题。
Frank 好的,谢谢大佬
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...