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.

TMS320F28388D: SCI数据收发错误

Part Number: TMS320F28388D

进行单核SCI数据收发过程时,选择不使用FIFO模式,进行数据收发时,数据读取使用函数SCI_readCharBlockingNonFIFO(SCIA_BASE),将读取到的数据存放在字符串数组中,读取到却是一长串十六进制ascll码,并且只有前两位和7、8位15、16位是正确的,其余都是错误的,我发送的数据是一串带帧头帧尾的数据串,想将这串数据从助手中原封不动收回来,并且设置定时发送可以稳定收到#,101443.00,103.68373212,36.12000077,1510.5636,214.74,-1.27,1,3,40,-0.032,0.011,-0.029,0.068115,0.006653,0.063416,-0.006561,-0.069748,1.001160*,在串口助手中收到的数据截图为,我的代码如下,麻烦指教。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "driverlib.h"
#include "device.h"
#include "RS422.h"
#include "string.h"
#define SCI_EMPTY 0
#define MAX_DATA_LENGTH 160
char dataString[MAX_DATA_LENGTH];
uint16_t bufferIndex = 0;
uint8_t startReading = 0;
char send1_flag = 0;
void main(void)
{
uint16_t t = 0;
Device_init();
Device_initGPIO();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 您好,

          #和*的ASC码正确,说明波特率是正确的。

         您发送的字符,接收以16进制显示,那么这个发送的字符串用16进制看是什么样的。

         提供一个调试思路,字符发送有规律的如 a b c d等,以定位程序问题。

  • 您好,

    对于您的建议,我进行了以下尝试:

    1.使用十六进制进行发送,收到的数据和之前是一样的;

    2.根据您提供的思路,我在串口助手发送#ABCD后,收到的也只有前两位是对的;

    下面是我串口调试助手收到的数据图片,麻烦您再指教一下,谢谢。

  • 您好,

          从您的测试数据来看,字符B丢掉了,猜测是接收程序有问题,只来得及处理2个数据。

         请只发送一次#ABCD,跟踪接收程序,看收到的数据是否正确。