生活随笔
收集整理的這篇文章主要介紹了
tms320lf240x 的串行通信接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先需要注意,串行通信模塊的寄存器是8位的。 一、串行通信接口的物理結構 1、兩個IO引腳 SCIRXD??? SCI接收數據引腳 SCITXD??? SCI發送數據引腳 2、一個16位的可編程的波特率選擇寄存器。 3、1-8位的可編程數據字長度。 4、可編程的停止位。 5、內部產生的串行時鐘。 6、全雙工或者半雙工。 7、雙緩沖的接收和發送功能。 二、SCI模塊的結構 1、一個發送器 SCITXBUF??? 發送數據緩沖寄存器,存放待發送的數據。 TXSHF?????? 發送移位寄存器。從SCITXBUS載入數據,并每次一位地將數據移位到SCITXD引腳。 2、一個接收器 RXSHF?????? 接收移位寄存器。每次一位地將SCIRXD上的數據移入。 SCIRXBUF??? 接收數據緩沖寄存器。接收由RXSHF移入的數據。 3、一個可編程的波特率發生器。 4、數據存儲器映射的控制和狀態寄存器。 三、SCI模塊的寄存器 SCICCR??? SCI通信控制寄存器????? 定義SCI使用的字符格式、協議和通信模式 SCICTL1???SCI控制器1??????????? 控制TX/RX和接收器錯誤終端使能、內部時鐘和SCI軟件復位 SCIHBAUD? SCI波特率選擇寄存器的高8位 SCILBAUD? SCI波特率選擇寄存器的低8位 SCICTL2?? SCI控制器2??????????? 包括發送器緩沖使能等 SCIRXST???SCI接收狀態寄存器 SCIRXEMU? SCI仿真數據緩沖寄存器 SCIRXBUF? SCI接收數據緩沖寄存器 SCITXBUF? SCI發送數據緩沖寄存器 SCIPRI??? SCI優先級控制寄存器 下面是一個簡單的串口通信實例,已經調試通過:
| void cpu_init(void) { ????SCSR1 = 0x83fe; ????WDCR = 0x0e8; ????asm(" SETC????INTM"); ????asm(" CLRC????OVM"); ????asm(" CLRC????CNF"); ????asm(" CLRC????SXM"); ????IMR = 0x0000; ????IFR = 0x0ffff; } void sci_init(void) { ????MCRA |= 0x03; ????SCICCR = 0x07; ????SCICTL1 = 0x13; ????SCICTL2 = 0x03; ????SCIHBAUD = 0x02; ????SCILBAUD = 0x07; ????SCICTL1 = 0x33; ????SCIPRI = 0x60; ????IMR |= 0x10; ????asm(" CLRC????INTM"); } void send(char *var) { ????int i; ???? ????for(i=0; i<strlen(var); i++) ????{ ????????SCICTL2 &= 0x0c0; ????????while(SCICTL2 != 0x0c0); ????????SCITXBUF = var[i]; ????} } void main(void) { ????cpu_init(); ????sci_init(); ?????????send("ni hao!"); ????while(1); } |
總結
以上是生活随笔為你收集整理的tms320lf240x 的串行通信接口的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。