1、串口Tx、Rx对应的GPIO初始化
给GPA0CON的相应bit位赋值为相应值,用C语言位操作完成。
void uart_init( void )
{
//初始化Tx、Rx对应的GPIO引脚
rGPA0CON &= ~( 0xff << 0 ); //把寄存器的bit0 ~ bit 7全部清零
rGPA0CON |= 0x00000022; //0b0010, Rx、Tx
}
2、UCON、ULCON、UMCON、UFCON等主要控制寄存器
依据上节中分析的值进行依次设置即可
void uart_init( void )
{
//初始化Tx、Rx对应的GPIO引脚
rGPA0CON &= ~( 0xff << 0 ); //把寄存器的bit0 ~ bit 7全部清零
rGPA0CON |= 0x00000022; //0b0010, Rx、Tx
//几个关键寄存器的设置
rULCON0 = 0x3;
rUCON0 = 0x5;
rUMCON0 = 0x0;
rUFCON0 = 0x0;
}
//波特率设置 DIV_VAL = ( PCLK / (bps x 16) ) - 1 DVI_VAL = (66000000 / (115200 X 16 )) -1 = 34.8 余数0.8
//PCLK_PSYS用66MHz算
//rUBRDIV0 = 34
//rUDIVSLOT0 = 0xdfdd;
//PCLK_PSYS用66.7MHz算
//DVI_VAL = (66700000 / (115200 X 16 )) -1 = 35.18 余数0.18
rUBRDIV0 = 35
//(rUDIVSLOT中的1的个数)/ 16 = 上一步计算的余数 = 0.18
(rUDIVSLOT中的1的个数)= 16 x 0.18 = 2.88 = 3 (3个1找推荐表)
rUDIVSLOT0 = 0x0888; //3个1,查表得到这个数字
3、波特率的计算和设置
(1)、第一步,用PCLK_PSYS和目标波特率去计算DIV_VAL = ( PCLK / (bps x 16) ) - 1
(2)、第二步,UBRDIV0寄存器中写入DIV_VAL的整数部分
(3)、第三步,用小数部分乘16得到1的个数,查表得到uBDIVSLOT0寄存器的设置值
4、串口发送和接收函数的编写
//串口发送程序,发送1个字符
void uart_putc( char c )
{
//串口发送一个字符,其实就是把一个字节丢到发送缓冲区(就是UTXH0寄存器)中去
rUTXH0 = c;
rUTXH0 = a;
//如果像上面这样发送,CPU太快,(因为没用中断)串口处理不过来。这时要去读一个状态寄存器(UTRSTAT0寄存器)
//因为串口控制器发送1个字节的速度远远低于CPU的速度,所以CPU发送1个字节前必须确认串口控制器当前缓冲区是空的(意思就是串口已经发完了上一个字节)
//如果缓冲区非空(UTRSTAT0寄存器)bit1位为0,此时应该循环,直到(UTRSTAT0寄存器)bit 1位为1。
while( !(rUTRSTAT0 & (1 << 1 ) ) ); //判断缓冲区为空
rUTXH0 = c;
}
(1)、写发送函数,主要发送前要用while循环等待发送缓冲区为空才能发送。
(2)、串口接收程序,轮询方式,接收一个字节
char uart_getc( void )
{
while( !(rUTRSTAT0 & ( 1 << 0 )));
return ( rURXH0 & 0x0f );
}
5、综合调试
void main( void )
{
uart_init();
while( 1 ) //让不停的发字符a
{
uart_putc( ‘a’ );
delay(); //延时函数
{
}
6、扩展练习 - 更改波特率后再调试
查时钟框图找时钟来源:
波特率计算:
发送接收状态寄存器:
上一篇:S5PPV210的中断体系介绍
下一篇:S5PV210串行通信编程实战-1
推荐阅读最新更新时间:2024-11-07 07:36
设计资源 培训 开发板 精华推荐
- 鸢尾立方->ESP-WROOM-02D开发板
- MT9P031 摄像头 模块
- DC1418A-C,使用 LT6604-10、10MHz 双路、匹配、全差分低通滤波器的演示板
- 使用 Analog Devices 的 AD7862 的参考设计
- 使用 Microchip Technology 的 LR8N3GP002 的参考设计
- S32V234EVB: S32V视觉和传感器融合评估系统
- AD9122-M5375-EBZ,用于 AD9121 双通道、14 位、1230 MSPS 数模转换器的评估板
- LTC3630AHMSE 4V 至 63V 输入至 -12V 输出、正负转换器的典型应用电路
- AM6TW-4809SH35Z 9V 6瓦双输出DC-DC转换器的典型应用
- SY58023U,用于 GB 以太网交换机的模拟交换机评估板