打印
[STM32F1]

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

[复制链接]
1460|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

粉丝