找回密码
 注册
关于网站域名变更的通知
查看: 320|回复: 5
打印 上一主题 下一主题

TMS320F28379D 之 SCI

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-10 10:37 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

3 M! C3 v4 V! |6 @& F一、SCI 简介
  I" [6 z6 v8 y( h# QSCI(Serial Communication InteRFace)意为"串行通信接口",是相对于并行通信的,是串行通信技术的一种总称,最早由 Motorola 公司提出的。它是一种通用异步通信接口 UART,与 MCS‐51 的异步通信功能基本相同。(以上内容来自百度)! a/ S9 E+ e' d) d% T/ S( f
3 o7 _8 a, ^! `2 s% S
二、28379D 的 SCI 模块简介
+ u2 i$ ^+ Y8 o" x* q2 n2.1 模块功能  E! }1 u1 T: H% j- h  T
基本就是 UART,数据格式可编程。28398D 的 SCI 和其他 28 系列的产品基本一样,有两个增强功能。一个是发送和接收缓冲,FIFO。如果启用了发送 FIFO,就可以将要发送的字节先储存在发送 FIFO 里,待发送 FIFO 里的字节数达到设置的上限后,再一起发送出去。如果启用了接收 FIFO,就可以将接收的字节先存在接收 FIFO 里,待接收 FIFO 里的字节数达到设置的上限后,再产生中断来处理接收的数据。另一个是波特率自动检测功能,这个一般不用。3 V0 a7 ^( A- s: T) U( I3 x
* [+ y- [& g& ~/ \* l8 l: L
1 p# M/ K3 Q0 L: H9 j% p
2.2 28379D 的 SCI 模块引脚" `# n+ T# g  _0 ^5 x$ m+ ?
28379D 有 4 个 SCI,即 SCIA,SCIB,SCIC,SCID。每个 SCI 的发送引脚和接收引脚都有很多个,如下表:
& ^* g% N! L% x: E9 O! h' X, V

% a$ m, R8 r' P0 n三、SCI 配置步骤( B* H; N9 ~* m
3.1 配置 GPIO  W9 r3 |5 X3 R" P* Y
配置相应的 GPIO 为 SCIx 的复用引脚。7 K9 D$ T$ K7 i( k
9 [: Q6 ]$ V7 C' {* I
6 a5 E7 {( k" g8 }
3.2 配置 SCI 的数据格式
& e8 R8 R. u! h) j  }配置发送和接收的数据格式,一般是:1 位停止位,无奇偶校验,无回环,空闲线模式(两个对象之间通讯,如果是三个及以上,得用地址线模式),8 位数据位。
' Q/ k4 ]1 p! j" B7 N
/ b' i- B9 M: A- ]+ }9 F' h1 l  G: M! M& @2 B  C. [4 s
3.3 配置波特率, S/ w5 J. A7 f! V7 \8 e
配置波特率,不多说。
3 H4 o3 v: p9 t3 f) n; W2 E& c- T/ v4 L
) F% ]* ]1 J1 r$ A$ l" q
3.4 配置 FIFO" D& N7 K! h& B5 N9 I8 @% z
首先得使能 FIFO,然后根据需要,进行配置。比如使能接收 FIFO 中断,设置 FIFO 的级数,基本的就这些。还可以配置波特率自检的一些设置,不过一般不用。( v8 G+ }' B; h% `- Z
! P3 B2 z& g- o: V, H2 k! _

- `9 _5 M$ b3 L3.5 使能 SCI
9 S+ \# ~; s- T2 x; ]+ n7 J& ^  }复位一些标志,比如 SCICTL1 寄存器的 SWRESET,必须被置 1,等等。/ S% i% w$ v. S/ o% T+ o

3 F2 l6 c& q& r, B2 Z4 g/ R) p0 H6 c
3.6 配置 PIE
& C, |0 q" ^& ]+ M3 H) Z/ w  k首先使能 PIE,然后修改 PIE 向量表,然后使能对应的 PIE,以及 CPU 中断。
4 T: J/ N% O; K! C/ p1 T- F  G0 [& F
/ x6 j' i; c/ {% Q- l
四、代码示例4 N4 B$ v* i0 t2 f) G
示例使用了 SCIB,引脚使用 GPIO18 为 Tx,GPIO19 为 Rx。
4 d1 p  l! }' {, ~9 ?, G, ^$ e  T4.1 配置 GPIO
2 A6 `" I$ {; `0 n) G# a* U. {
+ D$ Y* r1 T" oEALLOW;8 f- ]$ N& ^$ C' ^. v9 D
    GpioCtrlRegs.GPAPUD.bit.GPIO18=0;//开启上拉电阻* X/ t" q& j7 T: e; N# |$ l) ?4 j
    GpioCtrlRegs.GPAPUD.bit.GPIO19=0;//开启上拉电阻, g5 J' I! ?6 U" S- N7 K/ q
    GpioCtrlRegs.GPADIR.bit.GPIO19=0;; v7 S; g3 f; F, G* e' o
    GpioCtrlRegs.GPADIR.bit.GPIO18=1;
% a9 {, e1 `& w, a8 C7 N5 x; U    GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;% U' z- D: V9 |! D! D
    GpioCtrlRegs.GPAGMUX2.bit.GPIO19=0;& O( @! [/ u( `9 j0 F
    GpioCtrlRegs.GPAMUX2.bit.GPIO18=2;//复用为 SCIB 的输出
4 N9 C$ u* a8 ?' L- U+ k    GpioCtrlRegs.GPAMUX2.bit.GPIO19=2;//复用为 SCIB 的输入2 E4 O( k) o: f( b$ t
EDIS;
: g, i/ F5 M& |% ~) ~5 U, G4 K; p0 U2 k) l
4.2 配置数据格式
7 D9 F6 W4 |: [6 Q) [& ]% \! ~$ ?) V* O# E" r9 `" _
ScibRegs.SCICCR.all = 0x0007;//1 位停止位,无奇偶校验,无回环测试,空闲线模式,8 位数据位3 y0 p2 w% H" V8 w! B
" I0 ]* w, Z/ v4 A
4.3 配置波特率
! M0 d+ d  `7 g/ n- T* \- F
! K& w3 @% A; V* `0 s1 C& d7 OScibRegs.SCIHBAUD.bit.BAUD=0x0000;//波特率 115200
% r1 Y' g/ \. h" k$ G9 h5 ~  pScibRegs.SCILBAUD.bit.BAUD=0x0036;//波特率 1152003 w7 t! K; H% J9 C# T- l- V# K
. S5 y) o8 M: m# N- R' _/ ?8 t
4.4 配置 FIFO0 Y& I; H. R. I% G

$ w' y" V1 z8 s3 |' r$ jScibRegs.SCIFFTX.bit.SCIFFENA=1;//使能 FIFO
) o8 I& o" v9 P+ ?4 q  \4 X; ~ScibRegs.SCIFFRX.bit.RXFFIENA = 1;//使能 FIFO 接收中断
# k5 D; z( r4 b. |" ~ScibRegs.SCIFFRX.bit.RXFFIL=1;//FIFO 接收字节 13 u! y! Q: @$ I. o1 w* [8 Y; i
ScibRegs.SCIFFCT.all = 0x0;! p* L, j3 E+ o- z; x) r

  l8 i$ d6 ?! ]* C3 V' W4.5 重新使能 SCI
9 ?' |' _' ~# s5 d3 @3 M- w7 S3 t9 T( p: d
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset 重启sci
( X* M" e9 V  t* F0 k+ a; c" z* A1 T1 J
4.6 配置 PIE% z' z1 |7 i: N; n  t

+ P4 S* y6 |- z/ G) r4 ePieCtrlRegs.PIECTRL.bit.ENPIE = 1;//使能 PIE7 ]6 v& m2 p. P$ n  ~! f
EALLOW;
# t/ V6 O3 u& ~- \PieVectTable.SCIB_RX_INT=&ScibInterrupt;//修改中断向量表
- j$ `0 ~4 k$ I% H& n9 [0 T: vEDIS;
! a. A1 S6 Q/ _/ p: N5 z1 Z/ VPieCtrlRegs.PIEIER9.bit.INTx3 = 1;//使能 PIE 中断
% k' j  _9 k3 \" nIER |= M_INT9;//使能 CPU 中断
; J- [0 c% A3 z" u ( i  V: x4 t2 r" }1 }" o! {
% c1 A: y' X/ m, G, D
4.7 接收中断函数 ScibInterrupt 如下:
) w* e" r) k" e3 V6 }. R7 J; F& _8 u) _& F( K8 @
interrupt void ScibInterrupt(void)
" k6 _- Y: M- u% N  L{
: n0 O- T* T- x5 q6 m( D* d. m" O+ F    int i=0,data;
; Y4 ~6 i1 t8 f& `% T9 Q% F  F# y    for(i=0;i<ScibLegnth;i++)
3 \5 m. q$ ?6 z* \- w    {" y, {9 p( A; u% |( E& y
        data=ScibRegs.SCIRXBUF.bit.SAR;//接收的数据
3 t/ K7 {6 \0 `% ^- Z% V/ E8 N    }
* b# ?  {* [) ]* M' U' N    ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // 清接收中断标志' o+ E) H# i; P- u2 R3 f4 K
    PieCtrlRegs.PIEACK.all|=PIEACK_GROUP9;// 清接收中断标志& a/ m# K) F/ d* D" Q
}2 h. B) Y$ C: `3 i) e
  N9 E( n8 _* ~! q, ]; S
3 m( N' l( h5 G! S( U5 O+ M3 Y' @
4.8 发射函数
: B4 p4 C! w9 R1 n$ l ! Q% N: u7 H' A

( F7 x/ w! {+ n, Z6 e& w2 F- Eint ScibSend(int data)# V3 E4 h6 Z1 S- |0 d
{
3 @5 z" `: n( A7 e" y& G$ j. m     while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}9 g- \  _% C5 b1 R5 l: V5 w% x
     ScibRegs.SCITXBUF.bit.TXDT=0x06;- F+ B$ A; `, z; b
     return 0;$ d1 F9 I( E& |; X* C
}! C4 |5 [1 ^9 Y* G- N  `; g
! o# I9 b% l- v

: @1 o2 B" i$ z5 a% l

该用户从未签到

6#
发表于 2021-12-10 11:12 | 只看该作者
很实用的文章

该用户从未签到

5#
发表于 2021-12-10 11:11 | 只看该作者
配置相应的 GPIO 为 SCIx 的复用引脚

该用户从未签到

4#
发表于 2021-12-10 11:11 | 只看该作者
28379D 有 4 个 SCI,即 SCIA,SCIB,SCIC,SCID

该用户从未签到

3#
发表于 2021-12-10 11:10 | 只看该作者
首先得使能 FIFO,然后根据需要,进行配置

该用户从未签到

2#
发表于 2021-12-10 11:10 | 只看该作者
28398D 的 SCI 和其他 28 系列的产品基本一样,有两个增强功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 00:43 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表