TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP数据Int16通过串口传输转Char8位数组问题

用DSP的UART传输数据时候选择是非FIFO模式,可以每次传输8位。我通过AD采集的数据是Int16位的数组(Int16 A [1000];),所以需要把16位int转成高8位和低8位组合的数组(char B [2000]),例如假设数组中其中一个数int A[1]=999;要拆成char B[2]={09,99},然后要将charB数组转成十六进制char B[2]={0x09,0x63};
请问这样的过程应该如何编程?谢谢!

Shine:

请问用的是哪款器件?

AD采集的数据为什么不直接是十六进制的数?

把16bit转成高,低8位的话,通过移位可以实现。

jia ji:

回复 Shine:

c5502,ccs3.3,AD进来的数是放在int16 A[1000]数组里要给后面做算法用的,现在需要做一个测试,就直接拿采集数据出串口,串口现在调好的模式是只能8位8位出来需要拆数组,就像int16 A[3]={1,2,3}转成cahr B[6]={1,0,2,0,3,0}。就是上面的意思,实际数组里的值是变量不是我赋值的

Shine:

回复 jia ji:

c55x编译器支持的char是16bit的,不是8bit.5.4 Data Typeshttp://www.ti.com/lit/ug/spru281g/spru281g.pdf 

jia ji:

回复 Shine:

这样啊。。。请教下那我现在是int16[1000]的数组传出来需要拆成8位的数组应该怎样编程啊?只知道单个数值拆高低8位不知数组如何操作?

jia ji:

回复 Shine:

因为我看csl API上的宏CSLBool UART_write(char *pBuf, Uint16 length, Uint32 timeout);

例子是

Uint16 length = 4;char pbuf[4] = {0x74, 0x65, 0x73, 0x74};CSLBool returnFlag;ReturnFlag = UART_write(&pbuf[0],length,0);

它是这样写的,我可以实现。

现在实际情况是ad出的数据想通过串口出来检测烧写的程序能否采出正确的数据,所以需要将int16 A[1000]转成char*pBuf

Shine:

回复 jia ji:

找的一个文档看是否有帮助。http://www.ti.com/lit/an/spra757/spra757.pdf

 

jia ji:

回复 Shine:

你好我看了这个文档,确实是用来将16bit转8bit,但是它对应输出的是文件,我只是需要int强制转成char,再拆成8位的char。

赞(0)
未经允许不得转载:TI中文支持网 » DSP数据Int16通过串口传输转Char8位数组问题
分享到: 更多 (0)