f28335是一种基于德州仪器(TI)TMS320F28335数字信号处理器(DSP)的微控制器,广泛用于工业控制和嵌入式系统中。它具有丰富的外设接口,包括SCI(串行通信接口),用于串行通信。
SCI(Serial Communications Interface)是UART(Universal Asynchronous Receiver/Transmitter)的一个特定实现,它支持异步串行通信,通常用于设备之间的数据交换。
SCI的主要功能
- 异步通信:支持标准的RS-232协议,常用于点对点的通信。
- 波特率设置:可以配置多种波特率,以适应不同的通信速度要求。
- 中断和DMA支持:提高数据传输效率,减少CPU负担。
- 多种帧格式:支持不同的数据帧格式,包括起始位、数据位、奇偶校验位和停止位。
f28335串行通信SCI配置步骤
-
初始化SCI模块:
- 设置波特率(BRR寄存器)。
- 配置数据格式(包括数据位、停止位、校验位)。
- 启用SCI发送和接收功能。
-
发送数据:
- 将数据写入SCITXBUF寄存器。
- 等待发送完成标志(TXRDY)。
-
接收数据:
- 检查接收完成标志(RXRDY)。
- 从SCIRXBUF寄存器读取数据。
代码示例
以下是一个简单的初始化和发送数据的示例代码(基于C语言):
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
void scia_init(void)
{
// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
InitSysCtrl();
// Step 2. Initialize GPIO:
// Configure SCI-A pins
InitSciGpio();
// Step 3. Clear all __interrupts and initialize PIE vector table:
DINT;
// Initialize the PIE control registers to their default state.
InitPieCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
// Initialize the PIE vector table with pointers to the shell __interrupt Service Routines (ISR).
InitPieVectTable();
// Initialize SCI-A:
SciaRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SciaRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all = 0x0003;
SciaRegs.SCIHBAUD = 0x0000; // 9600 baud @LSPCLK = 15MHz.
SciaRegs.SCILBAUD = 0x00A3;
SciaRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset
}
void scia_xmit(int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {} // Wait for TX buffer to be empty
SciaRegs.SCITXBUF = a; // Send data
}
int main(void)
{
scia_init(); // Initialize SCI-A
scia_xmit(0x55); // Transmit data 0x55
for(;;) {}
}
这个例子展示了如何初始化SCI模块并发送一个字节的数据。可以根据实际需求进行扩展,如增加接收功能和错误处理。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/191663.html