- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
具有软件模拟 FIFO 缓冲区的串口通信模块设计
中科院等离子体物理研究所 魏永清 万宝年
A Serial-communication Module with Simulated FIFO Buffers
(Institute of Plasma Physics)Yongqing W. Baonian W.
摘要 本文通过介绍嵌入式处理器串口通信的特点,针对 RAM 空间有限的小系统,提出了
一种具有软件模拟 FIFO 缓冲区的串行口通信模块,并详细说明了模块设计的方法。
关键字 串口通信 模拟FIFO 缓冲区 模块化
中图分类号 TP368.1 文献标识码 B
Abstract : After introducing the characteristics of serial communication, this article proposes a
serial-communication module with simulated FIFO buffers to RAM limited embedded-systems,
and then explains the design in detail.
Keywords: Serial-communication, Simulated FIFO Buffers, Modularization
串行口,以其占用硬件资源少、编程控制简单等特点,广泛应用于串并转换、串行通信
等场合,用户使用串行口时只需要进行诸如转换速率、字符长度等简单配置即可令其工作,
因此它几乎成为各型号嵌入式处理器的标准外设。但由于其硬件结构相对简单,在实际应用
中,考虑到软件的执行效率、使用的方便性及软件的可维护性,必须对串口控制程序进行精
细而又巧妙的模块化设计才可以满足需求。本文结合在 HT -7 测控系统中数据通信模块的
设计经验,通过对串行口硬件资源管理方法及数据流处理方式的讨论,提出了具有软件模拟
先入先出(FIFO )缓存区的串口通信模块的设计方法。
1、串行口的管理
一般的嵌入式处理器,如 Intel51 系列和 AVR 系列,其串行口都不具有硬件缓冲区结构,
所以在发送或接收一个字符后,必须及时对串行口硬件资源进行管理,否则会出现因为没有
及时向发送寄存器写入字符而造成通信的中断、或因为没能及时读取接收缓冲区致使已接收
字符被覆盖而造成数据丢失的问题。嵌入式处理器的串行口对应有中断源和可供查询的标志
位来反映其工作状态,在进行串行口控制程序设计时,可利用这两个特性,采用标志位查询
或中断的方式实现对串行口的管理。标志位查询的方法,就是通过测试标志位有没有被置位,
来判断串行口正在处理的一个数据是否已被完整的发送或接收,然后根据标志位的收发类型
读出已经接收的数据或写入新的发送数据。例如下面采用查询方式的 C51 串行口接收程序。
void Uart_Send(void)
{
unsigned char i =0,*Pt =RXBuf;
while(i MAX_LENGTH)
{
while(!RI); //等待接收标志位置位
RI =0; //复位标志位准备接收下一字符
*Pt =SBUF; //读取已接收的数据
……
Pt ++;
i++;
}
}
完成一次发送或接收操作后,串行口会触发硬件中断,开放该中断即可在串口中断处理中完
成对硬件资源的控制。以 51 系列单片机为例,中断处理方式的串行口管理代码如下:
void Uart_Process(void) interrupt SIO_VECTOR
{
unsigned char RXChar,TXChar;
if(RI) //判断是否有接收完成中断
{
RI =0; //复位接收中断标志,为下一次中断作
您可能关注的文档
最近下载
- 摄像头检验作业指导书.doc VIP
- 《城镇污水污泥流化床干化焚烧技术规程》(征求意见稿).pdf
- 阿奇沙坦非无菌化学原料药车间设计--本科毕业论文.docx VIP
- 办公用品供货服务计划方案.docx VIP
- 用于透明细胞肾细胞癌分型和评估透明细胞肾细胞癌预后的基因及其应用.pdf VIP
- G 正谱 赶圩归来阿里里 林凯 合吧声乐歌谱正谱子五线谱钢琴伴奏谱乐谱曲 谱弹唱谱歌曲乐曲.pdf VIP
- 零星工程施工方案范本(3篇).docx VIP
- 新疆四史应知应会内容.doc VIP
- 眼科显微器械的清洗流程.pptx VIP
- Lesson9-10Howareyoutoday(课件)新概念英语第一册.pptx VIP
文档评论(0)