ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:162.54KB ,
资源ID:12675215      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12675215.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第四讲串口通信之接收.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第四讲串口通信之接收.docx

1、第四讲串口通信之接收第四讲-串口通信之接收LT 逐行解释:11:bclk为波特率的16倍。这个同uart_t。12:一帧数据接收完毕信号,可以通知顶层模块来提取数据。该信号 在复位后为“0”,在接收完一帧数据后变高,然后直到下一次检 测到起始位后,即下一帧数据到来时才复位到“0”。顶层模块可 通过检测该信号的上升沿来判断一帧数据是否已经接收完毕。19:用type声明一种枚举类型,用来表示接收状态机的状态。共有五 状态:r_idle-空闲状态,r_sample_start_bit-采样起始位状 态,r_sample_data_bit-采样数据位状态,r_stop-采样停止位状 态。24-31:通

2、过一个D触发器,先把串口的输入信号整形一下,这样可减 少干扰引起的检测误判。D触发器的原理的工作机制大家应该 明白吧,这里就不再赘述了。33-35:定义一些变量。count为时钟bclk的计数器,因为采用了16倍 频的时钟,所以一个数 据位会维持16个bclk时钟周期,需要 用count来计数。rcnt是对接收到的数据位进行计数。这个和串 口的发送程序有点类似的。32-95:通过状态机来接收一帧数据。 37-41:系统复位。 38:复位后状态机设置为空闲状态。 39-40:清零计数器。 41:置r_ready为0,表示数据还没接收完毕。 42-93:系统正常工作,通过状态机的变化实现一帧数据的

3、接收, 用case语句实现状态转变。 44-53:描述空闲状态时的执行动作。 45-49:若传送线上检测到低电平则立即转入 r_sample_start_bit状态,并清零计数器。反之,若没 有检测到低电平,则还是使系统处于r_idle状态,还 需要不断的去检测传送线的状态。 55-68:描述采样到起始位后执行的动作。 56-68:假设在44-53句中检测到的低电平是起始位,则这 个低电平应该持续 16个时钟(因为是16倍频采样 的)。在这16个时钟周期内,若是干扰,则可能会 在这16个时钟的时间内检测到高电平。若有,那么 状态机就回到x_idle 状态,否则就认为已经检测到 了起始位。 57

4、-64:在检测到起始位后的8个时钟里总线若一直是低电 平,则认为是检测到了起始位,状态机切换至 r_sample_data_bit,并初始化一些计数器, 准备开 始采样数据位。 70-85:描述采样数据位时执行的动作。 71-73:连续计数16个bclk时钟 74-85:当计数到16个bclk后,就开始采样传送线的电平状 态。 75-78:在检测传送线数据前首先判断是否已经接收完数据 位,若是就使状态机转入r_stop 状态,并清零计数 器。 79-83:若数据位还没有接收完毕,则80句,保持状态机处 于 r_sample_data_bit状态,并清零count。82句,把 当前传送线的电平状

5、态送入到接收缓冲器rbufs,并 通过83句将接收到的数据位计数器加1。 86-89:描述采样停止位时执行的动作。在本程序中,我们省 略了对停止位的采样,这样做对功能本身不会产生影 响。 87:置r_ready为1,通知外部数据接收完毕 88:更新数据输出缓冲器 89:使状态机重新会到x_idle状态,开始下一轮的接收检测。 90-91:描述状态机处于其它状态时的动作(假如状态机跑飞)。 在其它状态时,将状态机置为x_idle,使状态机正常工 作。 以上只是编写了一个串口接收的元件,现在编写一个顶层调用模块,调用这个接收元件来接收PC机上通过“串口调试助手”发送的数据,并根据接收到的数据点亮不同的LED。 代码如下: 程序代码比较简单,就不再赘述了,大家可以自己去体会。若有什么不明白的,请联系我们(qq:1438801646)。 还是按串口发送中所说的那样连接好串口线,选中串口调试助手的“按十六进制发送”。(否则在发送框里填入的是ASCII码,无法与程序中的case条件匹配上)。板子上电,复位后,发送一些数值,看看板子上的LED是否按程序变化。 串口的发送和接收都已经讲解完毕了,大伙可以编写一个顶层模块,将收发模块同时调用,并与计算机进行通信。我们也准备了一个程序,供大家参考附件:uart_t_r-收发合置。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1