ARM裸机串口
来源:互联网 发布:dijkstra 堆优化 编辑:程序博客网 时间:2024/05/22 19:23
硬件还是tiny6410 , s3c6410, 手册上得知这款芯片有4个UART端口,可以通过中断或者DMA进行传输,速率可达3Mbps,每个UART通道有2个64字节的FIFO分别用于接受和发送。
这是它的结构图:
UART的使用挺简单的,和cortex-M的32差不多,先配置引脚复用为串口模式,然后设置UART的数据位,格式等,最后设置波特率。
这里配置串口0 吧,先看电路图:
串口0 是接到了GPA0 和GPA1 上面,那就直接把GPA0和GPA1配置为TXD和RXD就可以了。
GPACON &= 0x00; //将A0和A1的寄存器位置 清0GPACOM |= 0x22; //配置他们为串口模式
这是串口0 相关的寄存器:
ULCON用来设置数据的格式,这里配置为8位,无校验,无停止位。
UCON用来配置串口的时钟选择和使用模式选择,是中断还是DMA。这里配为PCLK ,发送接受用轮询。
UFCON0 设置FIFO,UMCON0 设置自动流控制的。
UBRDIV0 和UDIVSLOT0 两个配合设置波特率,他们的关系有这么一个公式:
UBRDIV + UDIVSLOT/16 = (PCLK / (波特率 x 16)) - 1。 我们的时钟配置PCLK = 66.5Mhz ,波特率 115200,代入算得UDIVSLOT0 = 0x01,UBRDIV0 = 35;
ULCON0 = 0x03; ///8位寄存器,写入全部控制字了,所以不用担心影响其他位而进行& 和 | 什么的操作。UCON0 = 0x05;UFCON0 = 0x01;UMCON0 = 0x00; //配置波特率UBRDIV0 = 35;UDIVSLOT0 = 0x01;
剩下几个寄存器就是实际操作UART用到的了, UFSTAT 用来判断接受缓存和发送缓存的状态,方便去读或继续发。
URXH 和UTXH 就是接受和发送寄存器。所以串口发送和接受的函数是:
char getchar(void){ while((UFSTAT0 & 0x7F) ==0); return URXH0;}void putchar(char c){ while(UFSTAT0 & (1<<14)); UTXH0 = c;}
阅读全文
0 0
- ARM裸机串口UART
- ARM裸机串口
- ARM裸机程序之串口控制定时器
- ARM裸机实验 UART串口(S3C2440A) TQ2440
- ARM裸机——FS2410串口通信(UART)
- 【ARM】串口通信·FS2410·裸机UART
- 1.7.ARM裸机第七部分-串口通信详解
- ARM裸机程序开发20(2440串口总结:寄存器篇)
- 只用串口和网络裸机开发ARM程序(OK6410开发板)纯(转)
- 九.ARM裸机学习之串口通信详解2(S5PV210串行通信编程详解)
- mini2440裸机编程 串口
- 裸机串口操作
- 裸机系列-UART串口
- 串口裸机程序设计
- 九.ARM裸机学习之串口通信详解1(串口通信接口及原理框图详解)
- ARM裸机重新开始
- arm 裸机程序
- ARM裸机实验
- Map哈希表的用法
- 正则表达式
- [NOIP2013] 货车运输
- 人名中间的小圆点的实现方式
- T-SQL 之数据定义语句(DDL)
- ARM裸机串口
- unity shader _MainTex_TexelSize 和 UNITY_UV_STARTS_AT_TOP 的作用
- BZOJ 1978: [BeiJing2010]取数游戏 game
- python的判断和循环
- MySQL行号的实现
- Android学习-SharedPreferences
- MySQL对已有数据的表进行分区表
- yoj维护
- 网络“后门”-端口的故事①