OK6410 uart 简单测试程序

 

uart初始化。

1  我们可以通过原理图可知道  串口的RXD,TXD 分别连接在OK6410 GPA0,GPA1 口上的。。所以首先设置GPIO 的输入输出状态:0010=UART RXD[0]      0010=UART TXD[0]   

   同时设置相应的上下拉电阻关系。

 

rGPACON = (rGPACON & ~(0xff<<0)) | (0x22<<0); 
rGPAPUD = (rGPAPUD & ~(0xf<<0)) | (0x1<<0);


 

 

2  uart 初始化:

     2.1、配置UART 0 通道行控制寄存器。ULCON0格式如下图所示

 

	rULCON0=rULCON0&(0xFFFFFFFF)|(0<<6)|(0<<3)|(0<<2)|(3<<0);   //普通操作模式   无校验  1位停止位   8位数据位


   2.2 配置 UCON0寄存器。

	rUCON0=rUCON0&(0xFFFFFFFF)|(0<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1<<0);  


·

 

 2.3、配置UFCON0寄存器 

 

	rUFCON0=rUFCON0&(0xFFFFFFFF)|(0<<6)|(0<<4)|(0<<2)|(0<<1)|(0<<1);


 

 2.4、配置 rUMCON0 寄存器

	rUMCON0 = (0<<4)|(0<<0); 


  2.5、设置波特率   UBRDIV0,UDIVSLOT0  寄存器  

           因为上面  配置UCON0寄存器的时候选择 该模式 所以采用以下公式

            DIV_VAL = (PCLK / (b/s × 16 ) ) –1

            PCLK=66MHz  =66000000Hz

           DIV_VAL=66000000/(115200× 16)) - 1

                          =35.8-1

                          =34.8

UBRDIVn = 20 (DIV_VAL 的整数部分)
(UDIVSLOTn 中 1 的数量)/16 = 0.8
这时, (UDIVSLOTn 中 1 的数量) = 12
因此, UDIVSLOTn 为 16’b1101_1101_1101_1101 或者 16’b0111_0111_0111_0101 等。 

Num of 1’s UDIVSLOTn Num of 1’s UDIVSLOTn
0 0x0000(0000_0000_0000_0000b)           8    0x5555(0101_0101_0101_0101b)
1 0x0080(0000_0000_0000_1000b)           9    0xD555(1101_0101_0101_0101b)
2 0x0808(0000_1000_0000_1000b)          10   0xD5D5(1101_0101_1101_0101b)
3 0x0888(0000_1000_1000_1000b)          11   0xDDD5(1101_1101_1101_0101b)
4 0x2222(0010_0010_0010_0010b)          12   0xDDDD(1101_1101_1101_1101b)
5 0x4924(0100_1001_0010_0100b)          13   0xDFDD(1101_1111_1101_1101b)
6 0x4A52(0100_1010_0101_0010b)          14   0xDFDF(1101_1111_1101_1111b)
7 0x54AA(0101_0100_1010_1010b)          15   0xFFDF(1111_1111_1101_1111b)

  根据上述分析:

 
	rUBRDIV0=34;
	rUDIVSLOT0=0xDDDD;

 

3   uart 发送 

        主函数调用  Uart_Printf()函数实现打印功能

        uart 发送的时候是通过判断FIFO缓冲器(UTRSTAT0  的第二位 )是否为空,如果为空则发送。  (这个是在 UFCON0 寄存器中第六位 设置的) 

      

     

     void Uart_SendByte(int data)
      {
	   while(!(rUTRSTAT0&0x02));
	      WrUTXH0(data);
      }

          


 最终工程文件:http://pan.baidu.com/share/link?shareid=64455&uk=3037598361

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值