一、IO配置

  以SCIA为例:使用的是GPIO35--SCITXDA    GPIOA36--SCIRXDA

  使用寄存器:

  GPBPUD :设置上拉  GPIO32-GPIO63   对应位0 使能上拉

  GPBQSEL1:

  GPBMUX1:IO模式选择

  代码如下:

    GpioCtrlRegs.GPBPUD.bit.GPIO36 = ;    // Enable pull-up for GPIO28 (SCIRXDA)//使能内部上拉
GpioCtrlRegs.GPBPUD.bit.GPIO35 = ; // Enable pull-up for GPIO29 (SCITXDA)//使能内部上拉
GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = ; // Asynch input GPIO28 (SCIRXDA) //设置为异步输入模式 GpioCtrlRegs.GPBMUX1.bit.GPIO36 = ; // Configure GPIO28 for SCIRXDA operation //配置为外设模式
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = ; // Configure GPIO29 for SCITXDA operation//配置为外设模式

设置FIFO寄存器:

  

void scia_fifo_init()
{
SciaRegs.SCIFFTX.all=0xE040;//使能FIFO;清除发送中断标志位;禁止FIFO发送中断;
//发送中断级别定义为0;
SciaRegs.SCIFFRX.all=0x204f;//清除FIFO溢出标志位;清除溢出接受中断标志位;禁止
//FF接受中断;接受中断级别为16;
SciaRegs.SCIFFCT.all=0x0;//SCITXBUF到移位寄存器传送不延迟 }

设置SCI相关寄存器:  寄存器描述见http://www.ti.com/lit/ug/sprufz5a/sprufz5a.pdf

void scia_echoback_init()
{
// Note: Clocks were turned on to the SCIA peripheral
// in the InitSysCtrl() function 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.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =;//开启接收中断
SciaRegs.SCICTL2.bit.RXBKINTENA =;//开启发送中断
#if (CPU_FRQ_150MHZ)
SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
SciaRegs.SCILBAUD =0x00E7;
#endif
#if (CPU_FRQ_100MHZ)
SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.
SciaRegs.SCILBAUD =0x0044;
#endif
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}

波特率计算方式:

发生一个字节:

  

void scia_xmit(int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != ) {}
SciaRegs.SCITXBUF=a; }

使用SICA  发送,串口中断接收:

  配置参数如下:

  

static void Init_SCI_A(Uint32 Baud)
{
//Init IO
Uint16 BRR=;
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO36 = ; // Enable pull-up for GPIO28 (SCIRXDA)
GpioCtrlRegs.GPBPUD.bit.GPIO35 = ; // Enable pull-up for GPIO29 (SCITXDA)
GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = ; // Asynch input GPIO28 (SCIRXDA)
GpioCtrlRegs.GPBMUX1.bit.GPIO36 = ; // Configure GPIO28 for SCIRXDA operation
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = ; // Configure GPIO29 for SCITXDA operation
EDIS; //set RX interrput function
EALLOW;
PieVectTable.SCIRXINTA = &SciaRxIsr;
EDIS; //set SCIA register
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 =;//close TX interrput
SciaRegs.SCICTL2.bit.RXBKINTENA =;
//set Baud BRR= LSPCLK/(Baud*8)-1
BRR = SCI_LSPCLK/(Baud*)-;
SciaRegs.SCIHBAUD = (BRR>>); // 9600 baud @LSPCLK = 37.5MHz.
SciaRegs.SCILBAUD = (BRR&0x00ff);
// SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
// SciaRegs.SCILBAUD =0x00E7;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset EALLOW;
//set SCI interrput Group
PieCtrlRegs.PIECTRL.bit.ENPIE = ; // Enable the PIE block
PieCtrlRegs.PIEIER9.bit.INTx1=; // PIE Group 9, int1 enable SCIA_RX
//PieCtrlRegs.PIEIER9.bit.INTx2=1; // PIE Group 9, INT2 enable SCIA_TX
EDIS;
}

  发送数据代码:

  

//send one byte data
static void scia_xmit(int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != ) {}
SciaRegs.SCITXBUF=a;
} //send string
void scia_msg(char * msg)
{
int i;
i = ;
while(msg[i] != '\0')
{
scia_xmit(msg[i]);
i++;
}
}

最新文章

  1. Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
  2. quartz配置文件详解
  3. Ajax跨域请求
  4. POJ 1202 Family 概率,DP,高精 难度:2
  5. 调试MVC项目,不关闭 IIS EXPRESS
  6. (MariaDB)MySQL内置函数大全
  7. Nginx+Keepalived搭建高可用负载均衡集群
  8. 正向代理or反向代理
  9. 【转载】安装 gephi 软件
  10. linux硬盘挂载-新硬盘挂载和扩容硬盘挂载
  11. TensorFlow人脸识别
  12. 关于Cocos2d-x中多边形物理刚体的设置
  13. 让iOS应用支持不同版本的系统与设备
  14. 极小极大搜索 的个人理解(alpha-beta剪枝)
  15. HDU3652 B-number 数位DP第二题
  16. vuex到底是什么?
  17. TSP问题之状压dp法
  18. python:字典的方法
  19. spring boot配置文件
  20. Android 关于软键盘

热门文章

  1. httpClient和RestTemplate的使用
  2. NOIP2018 D1T3赛道修建
  3. Shell中Bash的基本功能(二)
  4. Mongodb副本集集群搭建
  5. [CSP-S模拟测试]:山屋惊魂(模拟)
  6. linux xz压缩解压
  7. @WebService这个标签的作用是什么
  8. jQuery file upload上传图片出错分析
  9. linux查看端口被那个进程占用
  10. leetcode 374. 猜数字大小(python)