概述
IMX6ULL串口驱动备忘录
- 驱动步骤
- 串口备忘录
- 串口驱动编程
驱动步骤
①看原理图找对应串口号
②设置UART总时钟,再给对应串口提供时钟(从CCM里面找)
③利用Uart Control Register(UCR1)使能串口
④使用MUX让对应引脚处于UART_TX与UART_RX
⑤IMX6ULL特殊点:UART_RX可以回环接到TX看自己的输出,要在Daisy中设置其是否回环
⑥设置波特率参数,自己定UBIR,然后算UBMR,再设置对应寄存器
⑦设置数据包格式,数据位,校验位,停止位,在UCR2中设置
⑧IMX6ULL要求必须置位UCR3的bit2,使串口工作
串口备忘录
UART Status Register(USR),状态寄存器,可以从中读取发送、接收状态
URXD存储了串口接收到的数据
UTXD是发送数据寄存器
串口驱动编程
一个一个索引地址非常麻烦,IMX6ULL芯片手册提供了串口的结构体,成员都是串口寄存器地址
/*根据IMX6ULL芯片手册<<55.15 UART Memory Map/Register Definition>>的3608页,定义UART的结构体,*/
typedef struct {
volatile unsigned int URXD; /**< UART Receiver Register, offset: 0x0 串口接收寄存器,偏移地址0x0 */
unsigned char RESERVED_0[60];
volatile unsigned int UTXD; /**< UART Transmitter Register, offset: 0x40 串口发送寄存器,偏移地址0x40*/
unsigned char RESERVED_1[60];
volatile unsigned int UCR1; /**< UART Control Register 1, offset: 0x80 串口控制寄存器1,偏移地址0x80*/
volatile unsigned int UCR2; /**< UART Control Register 2, offset: 0x84 串口控制寄存器2,偏移地址0x84*/
volatile unsigned int UCR3; /**< UART Control Register 3, offset: 0x88 串口控制寄存器3,偏移地址0x88*/
volatile unsigned int UCR4; /**< UART Control Register 4, offset: 0x8C 串口控制寄存器4,偏移地址0x8C*/
volatile unsigned int UFCR; /**< UART FIFO Control Register, offset: 0x90 串口FIFO控制寄存器,偏移地址0x90*/
volatile unsigned int USR1; /**< UART Status Register 1, offset: 0x94 串口状态寄存器1,偏移地址0x94*/
volatile unsigned int USR2; /**< UART Status Register 2, offset: 0x98 串口状态寄存器2,偏移地址0x98*/
volatile unsigned int UESC; /**< UART Escape Character Register, offset: 0x9C 串口转义字符寄存器,偏移地址0x9C*/
volatile unsigned int UTIM; /**< UART Escape Timer Register, offset: 0xA0 串口转义定时器寄存器 偏移地址0xA0*/
volatile unsigned int UBIR; /**< UART BRM Incremental Register, offset: 0xA4 串口二进制倍率增加寄存器 偏移地址0xA4*/
volatile unsigned int UBMR; /**< UART BRM Modulator Register, offset: 0xA8 串口二进制倍率调节寄存器 偏移地址0xA8*/
volatile unsigned int UBRC; /**< UART Baud Rate Count Register, offset: 0xAC 串口波特率计数寄存器 偏移地址0xAC*/
volatile unsigned int ONEMS; /**< UART One Millisecond Register, offset: 0xB0 串口一毫秒寄存器 偏移地址0xB0*/
volatile unsigned int UTS; /**< UART Test Register, offset: 0xB4 串口测试寄存器 偏移地址0xB4*/
volatile unsigned int UMCR; /**< UART RS-485 Mode Control Register, offset: 0xB8 串口485模式控制寄存器 偏移地址0xB8*/
} UART_Type;
然后我们调用时只需要类似于UART_Type *uart1 = (UART_Type *)0x02020000;
,所有的地址就都标记好了,可以通过uart1->xxx来直接调用
最后
以上就是笑点低红牛为你收集整理的IMX6ULL串口驱动备忘录驱动步骤串口备忘录串口驱动编程的全部内容,希望文章能够帮你解决IMX6ULL串口驱动备忘录驱动步骤串口备忘录串口驱动编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复