使用CH9434实现SPI转四串口

CH9434芯片概述

CH9434 是一款SPI 转四串口转接芯片,提供四组全双工的9 线异步串口,用于单片机/嵌入式系统扩展异步串口。CH9434 包含四个兼容16C550的异步串口,最高支持4Mbps 波特率通讯。最多支持25 路GPIO,提供半双工收发自动切换引脚TNOW。

技术手册及开发资料

CH9434技术手册
CH9434评估板设计原理图,单片机端操作例程,LINUX驱动及应用例程

特点

● 工作电压:3.3V。
● 支持通讯波特率设置,波特率范围1200-4000000bps。
● 串口每个方向独立FIFO 缓存,发送1536 字节,接收2048 字节。
● 完全独立四个异步串口,兼容16C550并且有所增强。
● 串口支持5/6/7/8个数据位以及1/2个停止位。
● 串口支持奇、偶、无校验、空白0、标志1 等校验方式。
● 支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。
● 提供半双工RS485收发使能引脚。
● SPI 最高速率为16Mbit/s。
● 支持低功耗睡眠模式,可通过SPI 接口唤醒。
● 芯片内置时钟,可选外部晶振提供时钟。
● 芯片提供可配置GPIO 功能。
● QFN48_5X5无铅封装,兼容RoHS。

SPI通信格式

A.发送数据格式为第一个字节为操作地址,第二个字节为写入的数据或者读取的数据。B.操作地址的最高位为操作位,操作位为1则为写入数据,为0则为读取数据。C.当写入数据时,地址和数据两个字节间需要1uS延时,发送完数据后需要延时3uS才可以进行下一次操作。D.当读取数据时,地址和数据需要延时3uS,即发送完地址后延时3uS进行数据读取。 例如:要设置“时钟电源寄存器”的值为0x4D,那么就需要先向CH9434发送一个0xC8(时钟电源寄存器的地址+最高位为1表示写入数据),接着再向CH9434发送数据0x4D。

软件控制

程序设计流程:初始化接口配置->初始化CH9434->初始化串口0到串口3->数据收发。
在这里插入图片描述 (1)初始化接口配置,初始化SPI:GPIO的设置以及外设SPI的配置。复位CH9434的RST引脚:每次单片机重启都进行一次CH9434的复位。初始化CH9434:开启CH9434的外部晶振,设置倍频系数。 (2)初始化CH9434,四个串口按需求设置相应的寄存器。串口参数设置:串口的波特率、数据位、停止位、校验位。设置LCR寄存器,将DLAB置位才能操作DLM和DLL寄存器。串口FIFO设置:FIFO触发等级。FIFO触发等级越高,数据接受中断触发需要的数据越多。流控设置:开启流控时,仅在检测到CTS引脚输入有效(低电平有效)时串口才继续发送下一个数据,否则暂停串口发送。串口中断设置:线路状态中断、发送中断、接收中断开启中断设置串口RTS、DTR引脚状态 (3)发送数据或接受数据接收数据函数CH9434UARTxGetRxFIFOData()发送数据函数CH9434UARTxSetTxFIFOData()通过这两个函数读取RBR寄存器和向THR寄存器写入数据。