[STM32F1] 有做过STM32智能卡接口的大侠帮看下。

[复制链接]
1707|3
 楼主| cosxpeach 发表于 2014-1-17 15:32 | 显示全部楼层 |阅读模式
小弟在做STM32智能卡接口时遇到问题。
在对SAM卡发送完数据接收的时候,如果用USART_FLAG_TXE判断发送完成就会接收到2字节多余(打印这2字节发现是00跟发送数据串的最后一字节。例如发送的是0084000004,多余的2字节就是0004)。
如果是用USART_FLAG_TC判断发送完成就会丢1字节数据(例如发00C0000012取数据,中间应该收到C0的过程字节,但是发现没有,直接收到的是数据)。
目前是用USART_FLAG_TXE判断发送完成,然后在接收的时候忽略收到的前2字节,程序是这样先用着,暂时没出问题。
各位大侠,就想知道在发送完成应该是判断哪个标志位?
airwill 发表于 2014-1-18 16:25 | 显示全部楼层
那应该是 USART 的发送双缓冲引起的. 用USART_FLAG_TC, 你得记得, 收到这个信号后, 发送缓冲区里还有一个数据没有完成发送呢.
 楼主| cosxpeach 发表于 2014-1-20 08:47 | 显示全部楼层
那要如何处理这种情况?
发送收到USART_FLAG_TC信号再做一个延时?
版主,求解。
 楼主| cosxpeach 发表于 2014-1-21 10:52 | 显示全部楼层
问题解决,是串口初始化保护时间设长了,过程字节被冲掉。
发送完成用USART_FLAG_TC,保护时间设短避免过程字节丢失。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

54

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部