- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10.5 通信接口 通信接口通常用于嵌入式设备与其他设备进行信息交换,由于各类设备性能指标差异巨大,要实现信息的传递需要进行速率、电平、时序、信息格式等多方面的转换和匹配,所以该类接口种类十分丰富。 串行通信SCI接口 其他通信接口 * S3C2440中的UART模块 * 外 设 总 线 发送器 发送缓冲寄存器 发送移位寄存器 接收移位寄存器 接收器 接收缓冲寄存器 控制 单元 波特率发生器 时钟源 接口初始化: ULCON、UCON、UFCON、UMCON、UBRDIV 数据传递: UTRSTAT、UFSTAT、UTXH、URXH 接收错误状况: UERSTAT S3C2440A中UART0的相关寄存器 * 例10.2:UART0采用查询方式进行数据通信,要求使用8位数据位,1位停止位,奇校验,传输速率115200bps,不使用FIFO,关闭流控制,处理器外设时钟PCLK=66.68MHz。 步骤1:接口初始化 设置帧格式、时钟来源、收发模式、中断配置、FIFO的使用、波特率计算等 步骤2:数据传递: 可选择使用查询方式或中断方式传递 * 主要用于帧格式配置 ULCON0=0x23 步骤1:UART0的初始化 ①配置ULCON0线路控制寄存器 * 主要用于时钟源选择、收发模式、中断配置等 UCON0=0x0005 步骤1:UART0的初始化 ②配置UCON0控制寄存器 * 主要用于使能FIFO及相关参数配置 UFCON0=0x00 步骤1:UART0的初始化 ③配置UFCON0 FIFO控制寄存器 * 主要用于设置UART模块与Modem相关参数 UFCON0=0x00 步骤1:UART0的初始化 ④配置UMCON0调制解调器控制寄存器 * 步骤1:UART0的初始化 ⑤配置UBRDIV0波特率控制寄存器 UBRDIV= int (UART时钟频率/(波特率×16) ) – 1 采用66.68MHz的PCLK作为时钟源,为得到115200bps的速率,则: UBRDIV= int (66.68M/(115200×16) ) – 1 =int(36.176) – 1=35 实际波特率=UART时钟频率/((UBRDIV+1)×16) =66.68M/((35+1) ×16)≈115764bps 实际的工作速率与理论值之间存在偏差: (115764 – 115200)/115200×100% = +0.49% * 初始化程序段 ULCON0 EQU 0UCON0 EQU 0UFCON0 EQU 0UMCON0 EQU 0x5000000C UBRDIV0 EQU 0 LDR R2, =ULCON0 ;配置ULCON0寄存器 MOV R3, #0x23 STRB R3, [R2] LDR R2, =UCON0 ;配置UCON0寄存器 MOV R3, #0x05 STRH R3, [R2] LDR R2, =UFCON0 ;配置UFCON0寄存器 MOV R3, #0x00 STR R3, [R2] LDR R2, =UMCON0 ;配置UMCON0寄存器 MOV R3, #0x00 STR R3, [R2] LDR R2, =UBRDIV0 ;配置UBRDIV0寄存器 MOV R3, #35 STRH R3, [R2] * 步骤2:使用UART0进行数据收发 使用UTRSTAT0、UTXH0、URXH0进行状态的判断并完成通信。 * 收/发示例程序段 UTRSTAT0 EQU 0UTXH0 EQU 0;假设系统采用小端存储 URXH0 EQU 0;假设系统采用小端存储 ………… TLOOP LDR R0, =UTRSTAT0;读取UART0收发状态寄存器的值 TST R0, #0x02 ;判断发送缓冲区是否空闲 BEQ TLOOP ;不空闲则继续查询 LDR R0, =UTXH0 STRB R1, [R0] ;若空闲,则将R1寄存器中字节 ;传递至发送缓冲区,完成一字节 ;数据发送 ………… RLOOP LDR R0, =UTRSTAT0;读取UART0收发状态寄存器的值 TST R0, #0x01 ;判断接收缓冲区是否有数据 BEQ RLOOP ;若没有数据则继续查询 LDR R0, =URXH0 LDRB R1, [R0] ;若有数据则将数据收回至R1寄 ;存器完成一字节数据
文档评论(0)