用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。