文章目录

  • 一、蜂鸣器(待,理解)
  • 1.1 第一行
  • 1.2 第二行
  • 1.3 第三行
  • 二、串口原理
  • 2.1 通信格式
  • 2.2 UART寄存器


一、蜂鸣器(待,理解)

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_arm开发

1.1 第一行

对于第一行,首先先到fsl_iomuxc文件里面寻找IOMUXC_SetPinMux这个函数

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_arm开发_02


其次确定了SNV_TAMPER1并且复用为GPIO模式

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_复用_03


之后查看,IM6ULL的参考手册,看到第32章节、找到SNV_TAMPER1

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_复用_04


此时锁定复用方式为GPIO5_IO01

之后再到fsl_iomuxc,h上面找到这个SNV复用的宏定义,并且作为第一个输入参数

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_寄存器_05


根据手册,第二个参数为输入,为0(查了下功能,0的意思是不需要使能软件输入功能?)

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_复用_06


正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_arm开发_07

1.2 第二行

还是再fsl_iomuxc.h最下面找到IOMUXC_SetPinConfig,也就是电气属性
第一个参数还是和前面一样,最后还是和LDE一样设置为0X10B0,理由和LED的注释一样

1.3 第三行

刚刚我特地去看了下

正点原子阿尔法ARM开发板-IMX6ULL(四)——汇编LED驱动实验-下 首先为什么是(1<<1),因为IO01是在1这个位置,也就是2的一次方,所以左移一位,也就是2

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_串口_08


关于或等于|=,也就是GDIR原本是什么不变,但是按位相或,有1则1.

第四行和第三行解释一样

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_串口_09


首先是低电平打开,所以&=,有0则都0,所以取反

二、串口原理

2.1 通信格式

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_复用_10


比特率:9600、19200、115200TTL和232的区别

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_寄存器_11

RS-232电平实在VGA口的com3的那

2.2 UART寄存器

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_arm开发_12

在第55章,有IMX6ULL的UART_URXD保存着接受数据的寄存器

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)_arm开发_13


UART_UTXD寄存器为发送数据寄存器,如果需要通过串口发送数据,只需要将数据写入到UART_UTXD寄存器里面。

UART_UCR1-UCR4都是串口的控制寄存器。UART_UCR1的bit0是UART的使能位,为1的时候使能UART。Bit14为自动检测波特率使能位,为1的时候使能波特率自动检测。

UART_UCR2的bit0为软件复位位。为0的时候复位UART。Bit1使能UART的接收,我们要配置为1。Bit2为发送使能,要设置为1。Bit5设置数据位,0的话表示7位数据位,1的话表示8位数据位。Bit6设置停止位,0的话表示1位停位,1的话表示2位。Bit7奇偶校验位,为0的时候是偶校验,为1的时候是计校验。Bit8校验使能位,为0的时候关闭校验。

UART_UCR3的bit2必须为1!!

UART_UFCR寄存器的bit9~7设置分频值,UART的时钟源=PLL3/6=480/6=80MHz。CSCDR1寄存器的UART_CLK_SEL位设置UART的时钟源,为O的时候UART时钟源为8OMHz:,为1的时候UART时钟源为24M晶振。CSCDR1寄存器的UART_CLK_PODF位控制分频,一般设置为1分频,因此UART_CLK_ROOT:=80MHZ

UART_UFCR、UART_UBIR和UART_UBMR这三个寄存器决定了串口波特率。·

UART_USR2寄存器的bit0为1的时候表示有数据可以读取。Bit3为1的时候表示数据发送完成。