单片机串行口是怎么进行解码的?
3个回答
展开全部
首先看你串口的速率,CPU内部产生这个速率时还会有一个这个速率*12的检测频率,所以每个脉冲CPU会检测12次RXD的值,如果第2次检测时测量到了低电平,并且在接下来的3个偶数次中仍然检测到了低电平,就认为是是一帧数据的开始标志,然后每个数据均采用这个方法检测,每位依次移位存入SBUFF中,存够8位或9位(看设置的是模式几)给CPU中断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
串行通信时一种协议,一般规定了信号的电压,每位的发送时间(就是波特率),停止位,奇偶校验等。有好几根线实现,但一般是三线制,rxd,txd,gnd,你可以参考资料。
你所说的解码,可能是发送的数据是十六进制,或者ascii,或者其他。这个是看应用需要的。
你想用普通I/O进行串口通信的话也是可以的,可以参考io模拟串口
http://blog.21ic.com/group.asp?gid=47&pid=1171
你所说的解码,可能是发送的数据是十六进制,或者ascii,或者其他。这个是看应用需要的。
你想用普通I/O进行串口通信的话也是可以的,可以参考io模拟串口
http://blog.21ic.com/group.asp?gid=47&pid=1171
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
串口通信是直接发原始数据或指令的,最多加上启动位。结束位或校验位
所以不用解码,有错重发
收到数据时有中断,直接去buff读取就可以了
看来要讲详细一点,在UART串行通讯中,单片机把数据01000000B送到buff
,当启动发送时buff会自动把数据串行移出,即把数据的第一位送出,再送第二位。。。
经过232芯片把电平转化成模拟电平
然后到达接收方的232芯片把模拟电平转换成ttl电平
接受时把数据一位一位地移进buff
那么在接收方的buff就会受到01000000b,这是没有经过编码的数据
假如你想把数据加密就把数据变换一下,反正单片机硬件是没有编码系统的
此外,用一般的IO通信看你是实现什么协议,按照该协议来提供时序
一般来说能够模拟的串行通讯有I2C,SPI,SSP等等
再来说说并行通信
假如单片机A往P0口送01110111B,A的p0口接上单片机B的P0口,假如都能识别TTL电平,那么B的p0口上读到的数据就是01110111B
所以不用解码,有错重发
收到数据时有中断,直接去buff读取就可以了
看来要讲详细一点,在UART串行通讯中,单片机把数据01000000B送到buff
,当启动发送时buff会自动把数据串行移出,即把数据的第一位送出,再送第二位。。。
经过232芯片把电平转化成模拟电平
然后到达接收方的232芯片把模拟电平转换成ttl电平
接受时把数据一位一位地移进buff
那么在接收方的buff就会受到01000000b,这是没有经过编码的数据
假如你想把数据加密就把数据变换一下,反正单片机硬件是没有编码系统的
此外,用一般的IO通信看你是实现什么协议,按照该协议来提供时序
一般来说能够模拟的串行通讯有I2C,SPI,SSP等等
再来说说并行通信
假如单片机A往P0口送01110111B,A的p0口接上单片机B的P0口,假如都能识别TTL电平,那么B的p0口上读到的数据就是01110111B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询