系列文章目录
文章目录
- 系列文章目录
- 前言
- UART串口通信
- 介绍
- UART配置
- IIC
- 介绍
- I.MX6U 的 I2C
- SPI
- 介绍
- I.MX6U ECSPI
- 结语
前言
大概学完这三种通信后,之后就先去学系统移植,其他的先暂时放下
UART串口通信
介绍
串口全称叫做串行接口,通常也叫做 COM 接口。
UART:(Universal Asynchronous Receiver/Trasmitter)通用异步串行收发器。
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行收发器,相比 UART多了一根时钟线,一般 USART 是可以作为 UART使用的(不使用同步功能)。
详细参考:
UART配置
- 设置时钟源:寄存器 CCM_CSCDR1 的 UART_CLK_SEL,0:pll3_80m(80MHz,常用),1:osc_clk(24M)
- 设置分频器:寄存器 CCM_CSCDR1 的 UART_CLK_PODF,可设置 0~63,分别对应 1 ~ 64 分频,一般1分频。
- 初始化,设置 UART1 的寄存器 UART1_UCR1~UART1_UCR3,包括波特率,奇偶校验、停止位、数据位等等。
- 使能,寄存器 UART1_UCR1 的 UARTEN为 1
- 编写数据收发函数
波特率:
Ref Freq:经过分频以后进入 UART 的最终时钟频率。(UARTx_UFCR的RFDIV,010:1分频)
UBMR:寄存器 UARTx_UBMR 中的值。
UBIR:寄存器 UARTx_UBIR 中的值。
设置 UBIR=71, UBMR=3124,就是115200
寄存器 UARTx_URXD 和 UARTx_UTXD为UART 的接收和发送数据寄存器
这里有个电路用的不错,我们通常在板子电源去除的时候,如果这个时候还插着USB转TTL,会引入微弱的3.3v电压,可能会影响芯片启动:
这里设计 IN应该是开关控制,接在3.3上直接上电打开,掉电关闭。
正点原子封装的函数:
这里Makefile发生了一些变化,加了一些数学库链接和内联函数冲突解决方法
IIC
介绍
起始:在 SCL 为高电平的时候, SDA 出现下降沿
停止:SCL 位高电平的时候, SDA出现上升沿
数据传输: SCL 高电平期间, SDA 上的数据稳定,SCL 低电平时数据可变
发送完8位数据后,需要从机给主机一个应答信号,从机通过将 SDA 拉低来表示发出应答信号,表示通信成功。
IIC各种读写时序就不赘述了。
I.MX6U 的 I2C
标准模式:数据传输速率最高是 100Kbits/s
快速模式:数据传输速率最高为 400Kbits/s。
I2Cx_IADR(x=1~4)寄存器:地址寄存器
I2Cx_IADR 只有 ADR(bit7:1)位:I2C 从设备地址数据
寄存器 I2Cx_IFDR 也只有 IC(bit5:0):设置 I2C 的波特率,I2C 的时钟源可以选
择 IPG_CLK_ROOT=66MHz
我们要设置 I2C的波特率为 100KHz,那么 IC就可以设置为 0X15,也就是 640 分频。 66000000/640=103.125KHz≈100KHz
之后尝试做项目的时候参考吧:
SPI
介绍
SPI 全称是 Serial Perripheral Interface,串行外围设备接口。
I2C 最多 400KHz,但是 SPI 可以到达几十 MHz。
①、 CS/SS, Slave Select/Chip Select,这个是片选信号线
②、 SCK, Serial Clock,串行时钟
③、 MOSI/SDO, Master Out Slave In/Serial Data Output
④、 MISO/SDI, Master In Slave Out/Serial Data Input
更详细的介绍看:FPGA学习笔记(九)SPI学习总结及stm32的HAL库下SPI配置
I.MX6U ECSPI
I.MX6U 的 SPI 外设叫做 ECSPI,全称是 Enhanced Configurable Serial Peripheral Interface,和标准的没啥区别
ECSPIx_CONREG寄存器:控制寄存器
ECSPIx_CONFIGREG:配置寄存器
ECSPIx_PERIODREG:采样周期寄存器
寄存器 CSCDR2 的位 ECSPI_CLK_SEL :选择时钟源
寄存器 CSCDR2 的位 ECSPI_CLK_PODF:分频
ECSPIx_STATREG:状态寄存器
参考手册:
开发的时候还是参考他控制icm20608 这个6 轴 MEMS 传感器, 3 轴加速度和 3 轴陀螺仪,支持 I2C 和 SPI 两种协议,使用 I2C 接口的话通信速度最高可以达到400KHz,使用 SPI 接口的话通信速度最高可达到 8MHz
结语
暂时先到这里,学的很粗糙,但是有了一个大概的概念,后续再深入学习,直接先学系统移植