This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于F2812 SCI通信的几个疑惑

F2812中的数据是16位或者32位的,而SCI发送/接收缓冲寄存器是8位的。通过SCICCR控制寄存器设置,每一帧发送1-8位有效数据,若要发送一个字符或16位的数据,SCI如何工作,具体怎么执行?

  • 发送字符和16位数据原理是相同的。

    一般情况下发送一个字符的格式为1位起始位+8位数据位(字符ASCII码)+1位结束位,从8位数据发送缓冲寄存器中取出数据进行发送。具体过程为:

    在FIFO使能的情况下,首先发送数据缓冲寄存器SCITXBUF从TX FIFO中获取由CPU加载的需要发送的数据,然后SCITXBUF将数据传输发送给移位寄存器TXSHT,如果发送使能,TXSHT将接收到的数据逐位移到SCITXD引脚上

  • 非常感谢你的回答,不过我想问的是dsp中16位数据怎么通过SCI的8位发送缓冲器发送,例如 SciaRegs.SCITXBUF=S 这条语句,如果S是一个字符变量,在dsp中占16位,那么发送的时候是截取低8位还是分两次发送 还是别的方式??

  • 非常感谢你的回答,不过我想问的是dsp中16位数据怎么通过SCI的8位发送缓冲器发送,例如 SciaRegs.SCITXBUF=S 这条语句,如果S是一个字符变量,在dsp中占16位,那么发送的时候是截取低8位还是分两次发送 还是别的方式??

  • 非常感谢你的回答,不过我想问的是dsp中16位数据怎么通过SCI的8位发送缓冲器发送,例如 SciaRegs.SCITXBUF=S 这条语句,如果S是一个字符变量,在dsp中占16位,那么发送的时候是截取低8位还是分两次发送 还是别的方式??

  • 用ASCII码来表示该16位数据进行发送。比如十六进制数 0x100,发送时候分成2 5 6 三个ASCII码进行发送