打印

基于TI DSP的串行通信设计

[复制链接]
635|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Violin11|  楼主 | 2018-11-23 13:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于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;

相关帖子

沙发
zhangmangui| | 2018-11-23 22:47 | 只看该作者
2812基本没人用了  现在

使用特权

评论回复
板凳
shenmu2012| | 2018-11-25 21:06 | 只看该作者
定点DSP运算的数据都是定点数,为了更好的支持小数的运算,经常采用Q格式或者S格式来表示小数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

717

主题

1010

帖子

3

粉丝