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

TMS320F28379D 之 SCI

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

6 [* G3 X8 m! W( ?0 S- A; T' O2 ^一、SCI 简介, H+ g$ `) }# g- |
SCI(Serial Communication InteRFace)意为"串行通信接口",是相对于并行通信的,是串行通信技术的一种总称,最早由 Motorola 公司提出的。它是一种通用异步通信接口 UART,与 MCS‐51 的异步通信功能基本相同。(以上内容来自百度)! I# R4 S) L4 b2 G* b9 Z
' Z0 p) b2 Y6 }
二、28379D 的 SCI 模块简介$ S9 r5 l1 `* n# @. z! J- W8 e
2.1 模块功能
1 o6 h0 p; e1 |3 B* P2 S+ ^基本就是 UART,数据格式可编程。28398D 的 SCI 和其他 28 系列的产品基本一样,有两个增强功能。一个是发送和接收缓冲,FIFO。如果启用了发送 FIFO,就可以将要发送的字节先储存在发送 FIFO 里,待发送 FIFO 里的字节数达到设置的上限后,再一起发送出去。如果启用了接收 FIFO,就可以将接收的字节先存在接收 FIFO 里,待接收 FIFO 里的字节数达到设置的上限后,再产生中断来处理接收的数据。另一个是波特率自动检测功能,这个一般不用。* a2 o' g) G4 A( F
# t* m7 B: v3 n

- k# b5 T9 t. U0 L; P( r2.2 28379D 的 SCI 模块引脚2 V  J# t# g* Y$ f( R* j+ K
28379D 有 4 个 SCI,即 SCIA,SCIB,SCIC,SCID。每个 SCI 的发送引脚和接收引脚都有很多个,如下表:" ]' q$ L" f# e
! N6 m. I& E' w3 N; j
三、SCI 配置步骤& m% K' A- T1 q
3.1 配置 GPIO9 |* f+ C1 Q# N9 F$ f
配置相应的 GPIO 为 SCIx 的复用引脚。
1 w8 V2 c( W: t0 y% C& P: {& w
5 R2 M& W4 `! q( y" E2 e' `) W4 ~* \4 Y. i& T% f( d6 N
3.2 配置 SCI 的数据格式
" M$ L9 v8 d6 Q6 {. W, @$ ?6 l* t6 `配置发送和接收的数据格式,一般是:1 位停止位,无奇偶校验,无回环,空闲线模式(两个对象之间通讯,如果是三个及以上,得用地址线模式),8 位数据位。  Q, t* K" ^9 G( a! V4 n9 O& _
- E+ w, H0 y0 Y
7 m( T/ ~# X( I0 k7 h
3.3 配置波特率0 [7 \' s- y4 w
配置波特率,不多说。5 ~1 C) Q$ k" G/ {; R( S
( O& I- O: s- o, ~
2 o8 A- y4 O) A- U/ S
3.4 配置 FIFO
- {7 ^1 I+ j% V4 ?首先得使能 FIFO,然后根据需要,进行配置。比如使能接收 FIFO 中断,设置 FIFO 的级数,基本的就这些。还可以配置波特率自检的一些设置,不过一般不用。
3 j. M  w6 E( q0 ~5 F4 \7 h) b" e2 _; \6 ]: _  m0 u! U

& Q9 }7 m$ R! A+ I3.5 使能 SCI
) |  P! o, L, r复位一些标志,比如 SCICTL1 寄存器的 SWRESET,必须被置 1,等等。% W) U3 `0 b& Z& [! O
# v) a- K/ [$ Z; e( \
6 w) e4 ?: }# i8 o9 j) d
3.6 配置 PIE
0 l+ X3 y* I# X0 `; L; J  X首先使能 PIE,然后修改 PIE 向量表,然后使能对应的 PIE,以及 CPU 中断。6 d9 m3 g! }5 ^- B0 Z
$ n  O3 D) m$ N% p/ d: B7 x* X
5 n% D3 ~) ?9 Y5 Z1 E
四、代码示例
6 R% s% ^- q7 U示例使用了 SCIB,引脚使用 GPIO18 为 Tx,GPIO19 为 Rx。$ ?0 w7 m2 R, r0 H0 w
4.1 配置 GPIO9 u: E4 v+ G( b& v/ `

9 `$ E$ Y% l+ a- k1 }EALLOW;  q0 q( v  Y4 ?; O0 a0 R! E
    GpioCtrlRegs.GPAPUD.bit.GPIO18=0;//开启上拉电阻) W* H* r+ O* K! j& j& M6 p
    GpioCtrlRegs.GPAPUD.bit.GPIO19=0;//开启上拉电阻/ o  H# l# m1 @+ S* ^$ a
    GpioCtrlRegs.GPADIR.bit.GPIO19=0;9 B- S! ?! u1 d4 d& m: R% R
    GpioCtrlRegs.GPADIR.bit.GPIO18=1;3 `" j1 M0 T3 U# d+ G
    GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;4 I! `; V9 J+ r4 A4 C
    GpioCtrlRegs.GPAGMUX2.bit.GPIO19=0;* ?  i4 N8 o/ Y. t2 j) F+ ]
    GpioCtrlRegs.GPAMUX2.bit.GPIO18=2;//复用为 SCIB 的输出/ y; n5 ~- r9 j: n
    GpioCtrlRegs.GPAMUX2.bit.GPIO19=2;//复用为 SCIB 的输入& A+ P2 x7 T2 H$ E' \- z$ C
EDIS;: T: v# M- D* {$ Z

6 h7 `' r* a" y( ?4.2 配置数据格式* l; v3 T7 N/ T- Y; S! i+ A3 k$ E
% F  m. ]  Y4 m' P
ScibRegs.SCICCR.all = 0x0007;//1 位停止位,无奇偶校验,无回环测试,空闲线模式,8 位数据位
& X. V0 n; f" @
$ ~; X/ F& U3 h+ y) P, _3 l4.3 配置波特率& ^$ f1 V1 v9 R; a, ^- g* |
# _0 R% ~0 z4 f
ScibRegs.SCIHBAUD.bit.BAUD=0x0000;//波特率 115200  A  ?7 L) Y) n
ScibRegs.SCILBAUD.bit.BAUD=0x0036;//波特率 115200
, i' Q' q3 Y  k/ Y7 s. v" s) g4 ]" m/ m; t
4.4 配置 FIFO& X+ \' v# d/ Z6 M0 y  h

5 J% |9 l9 e* v" PScibRegs.SCIFFTX.bit.SCIFFENA=1;//使能 FIFO
/ m8 p" n' ]+ z# `. `ScibRegs.SCIFFRX.bit.RXFFIENA = 1;//使能 FIFO 接收中断
) o, w* P- n+ o7 n8 P/ vScibRegs.SCIFFRX.bit.RXFFIL=1;//FIFO 接收字节 12 D# i0 e& y) e+ m$ C
ScibRegs.SCIFFCT.all = 0x0;- p+ ~4 }3 [9 m' c* j3 U. m9 _' Q
* B1 o( n- y# ]+ ?) S$ O, c$ F3 m2 G
4.5 重新使能 SCI" x+ V* K! M- E- o/ ]
1 M  e$ N. t& N
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset 重启sci
! v& A2 {2 c! ^  ~# l9 g, M* ~2 b1 T1 }: I/ y7 y, f* \
4.6 配置 PIE
2 b1 B& H* O. v
9 I4 n/ e5 M+ M- t' `PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//使能 PIE
3 P+ B% u8 t4 f6 d8 jEALLOW;9 c' J; r! |! F8 h: k& G
PieVectTable.SCIB_RX_INT=&ScibInterrupt;//修改中断向量表' T6 V* \! i! ]' J2 H% L
EDIS;- y* L$ R5 H' p3 {* y; M% f+ ^% c
PieCtrlRegs.PIEIER9.bit.INTx3 = 1;//使能 PIE 中断" Y' T. s' b7 E+ V
IER |= M_INT9;//使能 CPU 中断! ~( a; p* ~3 f
8 t( w+ A1 z) S

; z) Y# K9 ~2 t6 r4.7 接收中断函数 ScibInterrupt 如下:
# t+ t6 ~; Q! g* d# T
6 U2 C) Z/ l. u1 ~. [/ p" einterrupt void ScibInterrupt(void)
4 s* q; x) m- F$ m" p{
  r9 V7 }& B' \. P  ~& B% M    int i=0,data;6 D- O8 r) B4 b# d- R) P- ?7 m8 B( f
    for(i=0;i<ScibLegnth;i++)( `' _3 i7 z+ \( N
    {
+ o3 [" {1 V# |7 g4 R' Q        data=ScibRegs.SCIRXBUF.bit.SAR;//接收的数据7 N- c% n+ K% T2 J# K
    }" e$ p, l5 [- D) C" K
    ScibRegs.SCIFFRX.bit.RXFFINTCLR=1; // 清接收中断标志
! \' V2 V8 x1 D9 @- r0 b, a    PieCtrlRegs.PIEACK.all|=PIEACK_GROUP9;// 清接收中断标志6 T$ u9 k( ~& g" ]; {0 h- W
}
3 L4 |1 J6 q( a: a9 x8 ?% s   l. b" l; T" W' x5 f% ~' h% {

/ _7 S* X: q# K/ Z9 H- j4.8 发射函数
  F5 M% b9 X5 P; u0 x; F  ? ! ?3 ~7 y; y# O8 [* [

# ~/ H6 C& _$ Kint ScibSend(int data)
$ F  V' d2 h* X9 j% o{
$ N& T/ z' |( J# U. j- X2 q     while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
. l+ h  M% i7 K! h     ScibRegs.SCITXBUF.bit.TXDT=0x06;* R6 G/ n5 t8 Y: y( R! K
     return 0;2 e4 U! {# j8 `* I9 s* w1 ?
}
! y" R2 J4 ?) V' e* t
' l7 V: E& t: I+ x% }
4 W# ^( E' k) y# R0 }

该用户从未签到

2#
发表于 2021-12-10 11:10 | 只看该作者
28398D 的 SCI 和其他 28 系列的产品基本一样,有两个增强功能

该用户从未签到

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

该用户从未签到

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

该用户从未签到

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

该用户从未签到

6#
发表于 2021-12-10 11:12 | 只看该作者
很实用的文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 15:27 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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