TMS320F28335 串口 SCI
2010-01-19 14:33
TMS320F28335 的串口
有三个串口,SCIA,SCIB 和 SCIC,GPIO 的管脚对应如下
SCIA 对 应 GPIO28/29 和 GPIO35/36 两 组 可 选 , SCIB 有 四 组 管 脚 可 以 选 择 , 分 别 是
GPIO9/11,GPIO14/15,GPIO18/19,GPIO22/23,SCIC 对应的是 GPIO62/63。
首先需要定义管脚。
void InitSciaGpio()%%% //初始化 GPIO 管脚
{
%% EALLOW;
//根据硬件设计决定采用 GPIO28/29 和 GPIO35/36 中的哪一组。这里以 35/36 为例
//定义管脚为上拉
%%% GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;%%%
%%% GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;%%%
//定义管脚为异步输入
%%% GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;
//配置管脚为 SCI 功能管脚
%%% GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;
%%% GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;%%
%%% EDIS;
}
SCIB 和 SCIC 的配置差不多。
下来就要定义波特率等等了。例子是 9600bps,1,8,n,1.
void scia_init()
{
%%% 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.bit.TXINTENA =1; //发送中断使能
%%% SciaRegs.SCICTL2.bit.RXBKINTENA =1;//接收中断使能
%%% SciaRegs.SCIHBAUD%%% =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
%%% SciaRegs.SCILBAUD%%% =0x00E7;
%%% SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
接着进行中断的配置
%% EALLOW;%%% // This is needed to write to EALLOW protected registers
%% PieVectTable.SCIRXINTA = &sciaRxIsr;
%% PieVectTable.SCITXINTA = &sciaTxIsr;
%% PieVectTable.SCIRXINTB = &scibRxIsr;
%% PieVectTable.SCITXINTB = &scibTxIsr;
%% EDIS;%% // This is needed to disable write to EALLOW protected registers