第十五讲两周uart程序逐行解释_第1页
第十五讲两周uart程序逐行解释_第2页
第十五讲两周uart程序逐行解释_第3页
第十五讲两周uart程序逐行解释_第4页
第十五讲两周uart程序逐行解释_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我们先回忆下异步串口传输的数15、6、781位,停止位为1、1.5或2位。其中的起始位和停止位就是用来实现字符的同步。在空闲状态,传送线为逻辑“1”状态,数据的传送总是以一个“起始位”开始的,接着传送数据位,低位先行,最后我们用状态机来实现发送,代码贴图如下:逐行解释:8:由于串口发送的数据位可以是5、6、78位,所以用类属参数来定义发送的数据位,这framlen+1位。即,若外部传入的framlen为7,则串口发送数据位是8位。默认发送的数据位是8位。11:bclk为发送时钟,在这里,一般用16倍的规定波特率时钟来定义,即,若规定波特率为9600bps,则用发送时钟为9600*16Hz。所以发送一个位也就需要持续16个bclk。Resett为18txd_dnee=’’e=’’根据txd_done的状态来判断上一帧的发送情况,防止发送过快,使上一帧的数据发送不完24:用type一种枚举类型(仅仅是,并不是定义)。该类型包括四种状态,xx_idle为空闲状态,x_start_bit为发送起始位状态,x_data_bit为发送数据位状态,x_stop_bit为发送停止为状态。type的用法类似于C中用typedef来定义一种新的类型。26:定义一种states类型的信号。初始状态为x_idle。30:由于bclk1616个bclk时钟,所以定义了这个变量来计数16bclk。38-43:系统复位,各种计数器,传送线为高电平,即保持空闲状态44-99:case49:将txd_done置为050:置传送线为0,使脱离空闲状态,开始发51:计数器为x_idle,传送线还是为1,还是处于空闲状态。57-67:描述发送起始位状态时的执行动作58-61:保持传送线的状态为0,并持续16个bclk63-66:当16个blk时钟过后,状态机切换至发送数据位状态,并计数器,为发送数据位状态做好准备。65句将发送数据的第0位传至传送线。16bclk16bclk时间,另一个是发送数据69-71:16bclk的计数。当即到16个bclk后,就执行73-8372-8473-7774:将状态切换至发送停75-76:计数77:将传送线置为1,代表停止位 t加80:通 取出下面将要发送的数据82:就是将计数16个bclk的计数器准备下一个数据位的计数85-95:描述发送停止位状态时执行的动作16bclk时钟的高电平。当计数达到16个时钟后,将状态切换至空闲状态x_idle,这样状态机将状态切换至空闲状态,这样保证了状态机在跑飞时也能回到正常工作状态。100:将发送引脚的内部状态并行输出到A-O.程序贴程序解释:顶层文件一般都是元并配以简单的逻辑,这样能使整个程序条理清晰,看着让人舒服。倍数这里要采用9600bps的波故要分频产生16×9600的时钟为输入时钟是40M,经计算260分频即可,所以div_param设置为130。26-34:串口发送元件43-4952-60:串口发送元件实例化。62:通过串口发送元件例化,xmit_p已经和串口发送元件的xmit_cmd_p连接在一xmit_p置为1,就是一直启动串口的发送。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论