1589|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

基于TI DSP的串行通信设计 [复制链接]

这还是当初刚学DSP的时候做的东西(DSP+上位机的软件示波器),拿出来晒晒。
定点DSP运算的数据都是定点数,为了更好的支持小数的运算,经常采用Q格式或者S格式来表示小数。在TMS320F2812 DSP的软件编程上,采用了TI公司的智能Q格式(IQmath)。它可以在Q=1至30之间,用32位的定点数方便地表示不同范围的浮点数。而且,TMS320F2812已经将数学表固化在了BOOTROM中,在DSP上电时,将数学表自动加载到RAM里面。采用IQmath之后,可以直接调用相应的数学函数,大大提高编程与运行的效率。
在实际的通信过程中,考虑到DSP的串行缓冲区和PC机的缓冲区的数据位最大是8位,在DSP中,需要将待发送的32位的定点数拆分为4个8位数,然后依次发送;在上位机收到之后,按照顺序将数据包重组,再将收到的定点数除以定标值,即可方便的转换为实际的浮点数值。DSP软件中的数据处理函数如下:
void DataProcess (_iq input)
{         Uint16 j,m,temp[4];
for(j=0;j<4;j++)
{
           m=(3-j)*8;
           temp[j]=( input >>m)&0x000000FF;
           ScibRegs.SCITXBUF=temp[j];
}
}
在接收端LabVIEW的串行通信过程中,数据是以字符串的格式组成的,字符串中的每个字符实际上对应的是ASCII字符,所以在传送到串口发送数据之前要经过代码转换,串口数据必须转化为ASCII字符串才能进行传送和接收。在LabVIEW软件中,提供了十六进制数组转换为ASCII字符串的模块,用户只需编程完成十进制数据向十六进制数据的转换。
异步通信方式下,通信双方无统一时钟同步,传送的信息以1个字符数据为单位,开头与结尾均有特别的位码供接收方识别。但是,实际应用中要传输的数据是由多个字节组成的。要传输的数据有多种,每一种数据都有一个变量标识和实际的数据值。在这种情况下,在DSP端就要对每一种数据进行打包,把变量标识和数据值组合成一个完整的数据帧,然后再通过串口依次发送打包后的字节。本系统所采用的数据帧的格式如图所示。
串行通信格式
这里用查询方式实现串口通讯,下面是初始化和通信实现的程序。
void scib_fifo_init()                                                 {
   ScibRegs.SCICCR.all =0x0007;    // 1 stop bit,  No loopback
                                   // No parity,8 char bits,
                                  // async mode, idle-line protocol
   ScibRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                   // Disable RX ERR, SLEEP, TXWAKE
   ScibRegs.SCICTL2.bit.TXINTENA =1;
   ScibRegs.SCICTL2.bit.RXBKINTENA =1;
   ScibRegs.SCIHBAUD =0x0000;
   ScibRegs.SCILBAUD =0x00f3;
   ScibRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back
   ScibRegs.SCIFFTX.all=0xC028;
   ScibRegs.SCIFFRX.all=0x0028;
   ScibRegs.SCIFFCT.all=0x00;
   ScibRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset
   ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
   ScibRegs.SCIFFRX.bit.RXFIFORESET=1;

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表