基于PIC软件设计串行异步通信三倍速采样方法
[09-08 11:50:15] 来源:http://www.88dzw.com 单片机学习 阅读:8901次
文章摘要: PIC单片机采用此法实现软件UART时,硬件上只需要任意定义两个I/O引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可。软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2等),通过定时中断实现;在低档无中断的PIC单片机上可以控制每次主循环所耗的时间来实现。对于1200 bit/s波特率,码元宽度为833us,采样时间间隔即为278us。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3给出了串行接收的参考状态机转移过程。 图3 状态机转移流程 接收端空闲状态为高电平,当收到低电
基于PIC软件设计串行异步通信三倍速采样方法,标签:单片机开发,单片机原理,http://www.88dzw.comPIC单片机采用此法实现软件UART时,硬件上只需要任意定义两个I/O引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可。软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2等),通过定时中断实现;在低档无中断的PIC单片机上可以控制每次主循环所耗的时间来实现。对于1200 bit/s波特率,码元宽度为833us,采样时间间隔即为278us。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3给出了串行接收的参考状态机转移过程。

图3 状态机转移流程
接收端空闲状态为高电平,当收到低电平确认为起始位后,间隔4ts采样第1个数据位,然后每间隔3ts采样其它数据位,最后接收高电平确认停止位,数据接收完后回到空闲状态。如果起始位或停止位确认不对,程序均转入帧错误执行,回到空闲状态重新接收。
2.2 三倍速采样法实际应用
文中对中档单片机PIC12F675进行了软件异步串行通信设计,在程序设计中,关键部分是TMR0的中断服务。当通信波特率为1200 bit/S时,TMR0采用278us左右中断一次,TMR0的中断响应就为软件UART接收和发送通信过程的实现。通过MPLAB高效的代码编译后,约有150条单字指令代码,整个中断服务平均用约35个指令周期,实现一路软件UART在4 MHz工作频率下占用MCU约12%的运行带宽,通信过程比较可靠。理论上,只要保证MCU留有足够的运行带宽给其他任务,在此中断服务程序内把接收和发送的代码再复制1份或多份(数据结构独立),即可实现多路软件UART。当然,如果每路的波特率不同,采样频率必须是最高波特率的3倍,不同波特率的采样点间隔要独立调整。
该方法还在实际产品设计中都得到了很好的验证 最典型的是红外线自动抄表系统。该系统采用38 kHz红外调制,波特率为1200 bit/s的半双工串行异步通信。用软件实现此UART,并利用PIC单片机CCP模块的PWM输出38 kHz载波,在单片机外只须一个一体化红外接收头和一个红外发射二极管,即可完成所有设计要求,最大程度地减化了硬件设计,降低了成本,提高了系统的可靠性和性价比。
3 结束语
综上所述,三倍速采样法最大的好处是软硬件配置灵活、经济可靠,接收发送的引脚可以任意定义,采样定时可以用不同的定时器实现,利用同一个定时采样可以方便地实现多路软件UART,无需复杂的外围电路,即可实现可靠的串行异步通信。但也有些不足,不管有无数据通信,始终占用MCU运行带宽,串行通信的波特率不能太高,4 MHz频率工作的PIC单片机一般只能实现2400 bit/s的全双工通信。为此,可以通过提高MCU的振荡频率来实现高波特率通信,比如PIC单片机工作在20 MHz时,就可实现9600 bit/s;而且其通信可靠性可通过在采样时刻多次采样、多种校验等方法得到进一步提高。
- 上一篇:单片语音录放电路模块及其应用
《基于PIC软件设计串行异步通信三倍速采样方法》相关文章
- › 基于PIC单片机与串行闪存的SPI接口设计
- › 基于PIC软件设计串行异步通信三倍速采样方法
- 在百度中搜索相关文章:基于PIC软件设计串行异步通信三倍速采样方法
- 在谷歌中搜索相关文章:基于PIC软件设计串行异步通信三倍速采样方法
- 在soso中搜索相关文章:基于PIC软件设计串行异步通信三倍速采样方法
- 在搜狗中搜索相关文章:基于PIC软件设计串行异步通信三倍速采样方法