zhaorunhui 发表于 2015-1-12 19:05:11

STM32F4 USART流控

       有没有人用过STM32F4的硬件流控,项目中需要使用UART流控(RTS、CTS),我的应用使用STM库函数进行编写,配置部分是用STM32CubeMX软件生成,使用中遇到以下问题:
       进行通信阻塞测试时,PC机撤销RTS后,F4能正常响应CTS信号,发送阻塞(超时);但F4阻塞测试时,我设想的是禁用接收中断后(测试程序使用中断方式),收到第一个字符后,缓冲区满,F4的RTS应撤销,从而阻塞PC机发送,但测试发现,F4禁止接收中断后,PC端CTS信号一直有效,仍然可以继续发送,除非将RTSE设置为0才可以阻塞PC机发送。
       程序设定断点后,经测试,禁用接收中断后,未进入过接收中断处理部分(即未读取过DR),但不知道F4的RTS信号为何一直不撤销,不是说接收缓冲区慢的时候就撤销么?RTS需要什么特殊配置么?大家有没有碰到过类似问题?

zhaorunhui 发表于 2015-1-12 20:58:17

怎么没人回复啊?有人遇到过类似问题么?或者正常使用流控信号么?

沐紫 发表于 2015-1-13 16:35:51

帮顶,求解。建议楼主发帖提问时候,发布悬赏贴,这样网友会更热情

zhaorunhui 发表于 2015-1-14 21:46:04

昨天连上示波器测试了一下,发现正常通信时,STM32F4接收到数据后,232端RTS变为负电压(无效态),中断读取数据后,RTS有效(正电平),流控功能正常,出现问题的原因是:计算机端在CTS无效时仍在继续发送,可能未及时检测到CTS,对比过TL16C754C手册,说接收方可能不能及时检测到CTS,可能继续发送一个字节,但在STM32F4中,由于多接收这一个字节的数据,上一个接收数据未读取,新数据停止位后,RTS信号居然又恢复有效(变为正电平),按照手册,数据未读取时RTS应该无效才对,不知道这算不算芯片的BUG?

zhaorunhui 发表于 2015-1-14 21:55:37

沐紫 发表于 2015-1-13 16:35
帮顶,求解。建议楼主发帖提问时候,发布悬赏贴,这样网友会更热情

论坛新人,没法过悬赏帖,还不知道怎么发,请管理员支持一下。

zhaorunhui 发表于 2015-1-14 22:07:13

暂时的解决办法:RTS引脚上拉,需要阻塞时,不关闭接收中断,设置RTSE = 0,RTS信号变更为无效;恢复时,重新设置RTSE = 1,回复硬件流控,大家还有更好的处理办法么?
页: [1]
查看完整版本: STM32F4 USART流控