TMS320F28335——SCI串口
一、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++;
}
}
TMS320F28335——SCI串口的更多相关文章
- 利用SCI做的一个足球答题系统
SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位). SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的 ...
- 进军Linux
大二的时候学习Java,学完Java SE之后就放弃了这条道路,踏上了嵌入式之路.那时候约定好,选择了DSP,从C2000开始学起,基础仅仅是会C51,有C语言和Java的基础.这几年随着项目的需求变 ...
- .NET 串口通信
这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言
目 录 前言 前言 刚参加工作,使用过VB.VC开发软件,随着C#的崛起,听说是C++++,公司决定以后开发软件使用C#,凭借在 ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用
目 录 第十二章 二次开发及应用... 2 12.1 项目配制... 3 12.2 引用相关组件... 4 12.3 构建主程序... 5 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 8.总体控制器的设计
目 录 第八章 总体控制器的设计... 2 8.1 总控制器的职能... 2 8.2 组装和释放部件... 3 8.3 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 6.通讯控制器的设计
目 录 第六章 通讯控制器的设计... 2 6.1 控制器接口... 2 6.2 串口控制器... 3 6.3 ...
- Linux下的串口编程及非阻塞模式
本篇介绍了如何在linux系统下向串口发送数据.包括read的阻塞和非阻塞.以及select方法. 打开串口 在Linux系统下,打开串口是通过使用标准的文件打开函数操作的. #include < ...
随机推荐
- maven 私服的setting.xml配置
<?xml version="1.0" encoding="UTF-8"?> 2 <settings xmlns="http://m ...
- ali之mtl平台学习
摩天轮平台可以进行无线测试.设备借用.打包发布.线上监控等功能. 无线测试包括:mock测试.真机适配.代码审查.验收报告等. mock测试类似于fiddler,主要用于接口查看,可以查看请求,返回串 ...
- 使用Vue前端框架实现知乎日报app
这是:主页代码 <template> <view class="content"> <view class="uni-list"& ...
- vue基于element-ui的三级CheckBox复选框
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...
- php语法标识符
php语法标识符 一.总结 一句话总结: 常用<?php //这里写代码 ?>:其它要么不常用,要么需要开配置 二.PHP四大标识符(语法环境) 参考或转自:PHP四大标识符(语法环境) ...
- Oracle数据库用户的密码过期问题处理
SQL> select username, user_id, account_status,expiry_date, profile from dba_users where username ...
- 【c++进阶:c++ 顺序容器vector,string,deque,list,forward_list,array常用性质】
常用5种顺序容器性质: https://blog.csdn.net/oil_you/article/details/82821833 关于deque https://www.cnblogs.com/L ...
- leetcode 206 反转链表 Reverse Linked List
C++解法一:迭代法,使用前驱指针pre,当前指针cur,临时后继指针nxt: /** * Definition for singly-linked list. * struct ListNode { ...
- JavaScript基础篇详解
全部的数据类型: 基本数据类型: undefined Number Boolean null String 复杂数据类型: object ①Undefined: >>>声明但未初始化 ...
- 使用 go protoc --go_out 输出的 *.pb.go文件时报 undefined: proto.ProtoPackageIsVersion3
事情是这样的:我参考go的 grpc 实现 https://grpc.io/docs/quickstart/go/ Download the example The grpc code that wa ...