提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在嵌入式系统开发中,串行通信是最常用的通信方式之一。本文将介绍如何使用 TI 的 F28335 微控制器通过 SPI 接口控制 Exar 的 XR20M1172 芯片,实现 SPI 到串口的通信转换。
一、硬件准备
- F28335 微控制器
- XR20M1172 UART 接口扩展芯片
- 必要的电缆和连接器
二、硬件连接
将 F28335 的 SPI 引脚连接到 XR20M1172 的相应引脚:
F28335 GPIO -> XR20M1172
GPIO54 (SPI SIMO) -> SDI
GPIO55 (SPI SOMI) -> SDO
GPIO56 (SPI CLK) -> SCLK
GPIO57 (SPI CS) -> CS#
GPIO53 -> RESET#
三、SPI 配置
在 Code Composer Studio (CCS) 中,初始化 F28335 的 SPI 模块:
void SPIA_Init(void)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1; // SPI-A
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; //使能GPIO
//配置GPIO57
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1;
GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0;
EDIS;
GpioDataRegs.GPBSET.bit.GPIO53 = 1;
InitSpiaGpio();
//初始化SPIFIFO
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204f;
SpiaRegs.SPIFFCT.all=0x0;
SpiaRegs.SPICCR.all =0x000F; // 重置SPI并设置字符长度为16位 (0xF)
SpiaRegs.SPICTL.all =0x0006; //
SpiaRegs.SPIBRR =0x0008; //波特率设置
SpiaRegs.SPICCR.all =0x008F; // 工作模式
SpiaRegs.SPIPRI.bit.FREE = 1; // 空闲模式 xmission
}
SPIA相关的GPIO设置直接调用TI写好的函数。
四、帧格式构建并发送
设置信息帧格式,并写入SPIA放寄存器:
void SPIA_Write(Uint16 addr, Uint16 Data)
{
//构建数据帧格式
Uint16 message = (0 << 7) | (addr << 3) | (0x01 << 1);
//片选XR20M1172
GpioDataRegs.GPBCLEAR.bit.GPIO57 = 1;
//将数据帧写入SPITXbuffer
message = (message << 8) | Data;
SpiaRegs.SPITXBUF = (message | 0x0000);
//取消片选XR20M1172
GpioDataRegs.GPBSET.bit.GPIO57 = 1;
}
五、XR20M1172 配置
void xr20m1172_Init(void)
{
//xr20m1172复位
GpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;
DELAY_US(10);
GpioDataRegs.GPBSET.bit.GPIO53 = 1;
// 配置普通寄存器
spiWriteByte(0x03, 0x80); // 进入配置模式;
//设置波特9600率
spiWriteByte(0x00, 0); // DLL
spiWriteByte(0x01, 0x9C); // DLM
spiWriteByte(0x03, 0xBF); // 进入增强配置模式;
spiWriteByte(0x02, 0x08); //DLD
// 设置数据格式:8位数据,无奇偶校验,1位停止位
spiWriteByte(0x03, 0x03); // 退出配置模式
// 启用FIFO,清空发送和接收FIFO
spiWriteByte(0x02, 0x06); // 复位FIFO
spiWriteByte(0x02, 0x01); // 使能FIFO
}
六、SPI 数据发送
通过 SPI 接口将数据发送到 XR20M1172 的 THR 寄存器:
void sendDataToUARTB(Uint16 data)
{
spiWriteByte(0x00, data); // 写入数据到THR寄存器
}
总结
通过本文,我们介绍了如何使用 F28335 微控制器通过 SPI 控制 XR20M1172 实现 SPI 到串口通信。详细的硬件连接、SPI 配置、寄存器设置和数据发送步骤为实现稳定的串口通信提供了指南。如果有任何问题,请参考 XR20M1172 的数据手册或 TI 的 F28335 用户指南。