uart也是ESONY_4412芯片里面的控制器 它还是一种串口通行协议 它有两根数据线,所以通过uart串口连接的主机和外设都可以给对方发数据。 那uart是怎么发送数据的呢? 利用帧格式和设置相同的波特率就可以进行通信了。 数据位只能是5到8位,利用设置相应寄存器。 下面就来配置uart控制器里面相应的寄存器来实现,数据的收发,这里我们用ARM当主机,我们的电脑当外设进行通信。(一般用中间的接口com2(丝印con7)) 我们的串口连接的是一个小芯片用来转换什么的把,然后小芯片再的4412连接,这里我们直接看成,串口和4412芯片连接就可以了(忽略小芯片 我们直接看,和主芯片连接的引脚。(txd2 rxd2) 然后芯片手册去找这俩引脚(transmit 发送接口,RECIVE接收引脚)GPA1-0/GPA1-1
设置,GPA1CON[1]/GPA1CON[0]分别为uart的—txd 和rxd 所以 GPA1CON = 0X22 (不可以这样写)
设置成UART模式后就要去设置UART控制器的一些寄存器了。 这是uart下的所有寄存器,当然不是所有的都要设置,用那个就设置那个 (还有一些寄存器是只读的) 1)设置串口帧个格式 用8位,一个停止位,无校验位,正常模式(无红外) ULCON2 [7-0] = 0000011 2)设置uart状态为轮询模式(UCON2)[3:0]
UCON2 [3:0] = 0101 (其他位不能被改变)
3)设置数据发送的波特率(UNRDIV2/UFRVCVAF)
波特率设置工式; DATA = (100M/(11520016)-1) = 52.25 所以 UBRDIV = 52 UFRACVAL = 0.2516 = 4 这样就全部配置好了。然后我们怎么去收发数据? 往UTXH2的BUFFER里面写值,往URXH2读里面BUFFER的值就可以了,那么现在的情况就是我怎么知道你的BUFFER里面有没有值,或者我怎么知道你的值写好了没有,写好了我就去发送(我们的电脑写数据比我们设置的波特率高非常多一倍这会导致我写一个数可能就发了还几个数过去了),有值我就去读取 我们使用buffer的状态寄存器(读取、写入寄存器) uart transmit rcve stat(英语小天才)
作业: 纯手工手写,有问题请指教
|