前言
SCI通信的数据格式通常是可编程的,可以通过SCI的通信控制寄存器进行设置。常见的应用包括RS422、RS485和RS232等串行通讯协议
一、SCI是什么?
SCI通信是一种串行通信接口标准,主要用于在微控制器和外部设备之间进行串行通信。 它通常通过两根引脚进行数据传输:发送引脚(TXD)和接收引脚(RXD)。SCI通信的基本原理包括物理连接、数据传输、时钟同步和数据处理等方面。
二、使用步骤
1.HCG配置
TMS570LC43自带的一路串口可以通过调试口传输数据。
设置起始位、数据位、奇偶校验位和停止位等特定的数据格式。
2.CCS代码
使用DMA通信。
DMA通信是一种技术,允许某些硬件设备直接访问系统内存,从而绕过CPU进行数据传输。这种技术的主要优点是提高了数据传输的效率,减少了CPU的负担。
#define SCI1_TX_ADDR ((uint32_t)(&(sciREG1->TD)) + 3)
uint8_t RX_DATA[100] = {0};
g_dmaCTRL g_dmaCTRLPKT; /*!< 全局存放DMA配置信息的变量 */
void SciDmaRecv(void)
{
dmaEnable(); //dma初始化
sciREG1->SETINT |= 3 << 17; //使能sci接口的收发功能
dmaReqAssign(0, DMA_REQ28); //绑定sci接收引脚
//为通道0配置控制数据包
g_dmaCTRLPKT.SADD = SCI1_TX_ADDR ; /* source address */
g_dmaCTRLPKT.DADD = (uint32_t)RX_DATA; /* destination addr ss */
g_dmaCTRLPKT.CHCTRL = 0; /* channel control */
g_dmaCTRLPKT.FRCNT = 100; /* frame count */
g_dmaCTRLPKT.ELCNT = 1; /* element count */
g_dmaCTRLPKT.ELDOFFSET = 0; /* element destination offset */
g_dmaCTRLPKT.ELSOFFSET = 0; /* element destination offset */
g_dmaCTRLPKT.FRDOFFSET = 0; /* frame destination offset */
g_dmaCTRLPKT.FRSOFFSET = 0; /* frame destination offset */
g_dmaCTRLPKT.PORTASGN = PORTB_READ_PORTA_WRITE;
g_dmaCTRLPKT.RDSIZE = ACCESS_8_BIT; /* read size */
g_dmaCTRLPKT.WRSIZE = ACCESS_8_BIT; /* write size */
g_dmaCTRLPKT.TTYPE = FRAME_TRANSFER; /* transfer type */
g_dmaCTRLPKT.ADDMODERD = ADDR_FIXED; /* address mode read */
g_dmaCTRLPKT.ADDMODEWR = ADDR_INC1; /* address mode write */
g_dmaCTRLPKT.AUTOINIT = AUTOINIT_OFF; /* autoinit */
//设置控制数据包
dmaSetCtrlPacket(DMA_CH0, g_dmaCTRLPKT);
//启用DMA通道进行硬件或软件触发
dmaSetChEnable(DMA_CH0, DMA_HW);
while(dmaGetInterruptStatus(DMA_CH0, BTC) != TRUE);
//处理接收到的数据