#1楼主:如何通过DMA接收串口数据?
文章发表于:2008-07-08 11:57
串口设置成接收到8个字节后产生DMA中断,若一次通讯中发送端只发送了7个字节数据。
那这种情况下如何得知串口已接收到了7个字节数据?
谢谢
#3
文章发表于:2008-07-09 08:03
函数DMA_GetCurrDataCounte()
#4
文章发表于:2008-07-09 11:11
解决不了问题、
STM3210xx串口要是有超时功能就好了。
问:如何用STM32的资源做个类似与超时的功能??
#6
文章发表于:2008-07-10 14:02
我采用STM32F103系列, 串口DMA接收与DMA发送, 每隔多次通讯后, DMA发送总会少一个字符,而且少掉的字符会出现在一帧的任意位置, 导致PC机无法接收完整的一帧而报错. 后来把DMA发送改成串口中断发送,就解决了这一个问题. 我是采用BUSHOUND进行实时监控, 同时PC机在报错时进行查看后发现该问题,有没有高手指导一下。
#7
文章发表于:2008-07-10 14:47
#6的这个问题比较棘手,请问每次传送出错时DMA的指针和计数器内容是否正确?串口传送的波特率是多少?
现在要确认的是,PC端无法接收完整的一帧是因为STM32没有发送出所有字节,还是STM32发送出了所有字节但PC端的驱动遗漏了数据。改成串口中断发送就解决了这一个问题,一个可能的解释是字节与字节之间的间隔比用DMA方式变大了,使得PC端的驱动有充分时间响应。
这里还有一个因素:你提到“采用BUSHOUND进行实时监控”,请问是否使用了USB转串口的转接器?你能保证这个转接器在字节间隔很小时不遗漏数据吗?
#8
文章发表于:2008-07-10 15:39
可以尝试使用2个停止位,这样可以增加字节与字节之间的间隔。