蓝牙调试器之DSP串口蓝牙发送数据

蓝牙调试器之DSP串口蓝牙发送数据

蓝牙调试器之DSP串口蓝牙发送数据
//此函数功能为向SCITXBUF中输入一个字节的字符
void scia_xmit(char a)
{
SciaRegs.SCITXBUF=a;
//在此做判断,如果发送FIFO缓冲中数据 >= 16字节,要等待下直到FIFO小于16才能再次向FIFO中存数据
while(SciaRegs.SCIFFTX.bit.TXFFST >= 16){;}
}

//此函数功能为向SCITXBUF中输入一个字节的数,比如x=0x00A5,则SCITXBUF中只存储0xA5
void scia_nmit(Uint16 x)
{
SciaRegs.SCITXBUF=x;
//在此做判断,如果发送FIFO缓冲中数据 >= 16字节,要等待下直到FIFO小于16才能再次向FIFO中存数据
while(SciaRegs.SCIFFTX.bit.TXFFST >= 16){;}
}
void scia_nmsg(Uint16 * msg, Uint16 len)
{
int i;
for(i = 0;i < len;i++)
{
scia_nmit(msg[i]);

}

}
//拆分16位整型数据,例如想发送一个ampl=0x12A5,就使用本函数拆分成0x0012,0x00A5,存储到uintdata这个数组中,注意因为蓝牙调试器读取数据时,会把对应变量先接收到的数据存到低字节位置,所以ampl低字节数据放在数组的uintdata[0]位置,高字节放在数组的uintdata[1]位置。
void Uint16_to_Uint16(Uint16 i_16,Uint16 *uintdata)
{

Uint16 longdata = 0;
longdata = *(Uint16*)&i_16;
uintdata[1] = (longdata & 0xFF00) >> 8;
uintdata[0] = (longdata & 0x00FF) ;

}
//拆分4个字节的浮点型数据,例如想发送一个ampl=0x012312A5,就使用本函数拆分成0x0001,0x0023,0x0012,0x00A5,存储到uintdata这个数组中
void Float_to_Uint16(float f_16,Uint16 *uintdata)
{

unsigned long longdata = 0;
longdata = *(unsigned long*)&f_16;
uintdata[3] = (longdata & 0xFF000000) >> 24;
uintdata[2] = (longdata & 0x00FF0000) >> 16;
uintdata[1] = (longdata & 0x0000FF00) >> 8;
uintdata[0] = (longdata & 0x000000FF);

}

需要注意的是DSP中没有8位二进制型的数据类型,所以想要传输8位数据必须把此数据放在16位数据类型的低8位。
同时,由于DSP中的int类型是2个字节,但是蓝牙调试器的int类型占据4个字节,所以DSP中的int类型对应蓝牙调试器的short类型。
在这里插入图片描述

void SendBlue(void)
{
// //计算校验和开始
int i_Rsum=0;
Uint16 Rsum=0;
Uint16 TX_BUF[31];//定义一个数据包数组

       TX_BUF[0]=0x00A5;//包头
       Uint16_to_Uint16(out_base_index,&TX_BUF[1]);//频率out_base_index=0x1234→TX_BUF[1]=0x0034, TX_BUF[2]=0x0012 
    	Float_to_Uint16(THDX,&TX_BUF[3]);// THDX=0x9ABCDEF0→TX_BUF[3]=0x00F0, TX_BUF[4]=0x00DE, TX_BUF[5]=0x00BC, TX_BUF[6]=0x009A

//计算校验和,将TX_BUF原数据部分各元素低字节相加后取低8位
for(i_Rsum=1;i_Rsum<=9;i_Rsum++)
{
Rsum=TX_BUF[i_Rsum]+Rsum;
Rsum=Rsum&0x00FF;
}
TX_BUF[10]=Rsum;
TX_BUF[11]=0x005A;//包尾
scia_nmsg(TX_BUF,12);//串口发送TX_BUF这个数组,14是数组元素的个数
}
蓝牙调试器接收数据包定义变量为:
在这里插入图片描述

校验和=(0x34+0x12+0xF0+0xDE+0xBC+0x9A)&0xFF=0x56
接收到的数据包为0xA53412F0DEBC9A565A,则out_base_index=0x1234,THDX=0x9ABCDEF0

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值