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.

[参考译文] EK-TM4C1294XL:通过 UART 发送数据字节数组

Guru**** 2446730 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/621364/ek-tm4c1294xl-sending-array-of-data-bytes-via-uart

器件型号:EK-TM4C1294XL

大家好、

我正在使用 TM4C1294 launchpad、我正在尝试将阵列数据发送到热敏打印机进行打印。 如果使用以下命令通过 UART 发送数据阵列,是否正确?

for (i=0;i<10;i++)

UARTCharPut (UART2_base、data[i]);

当我使用 Arduino 发送相同的数据时,它就像一个魅力! 但是、当我尝试使用 TM4C129发送它时、它不起作用、并打印一些吉百利的内容!

我提到 Arduino、因为最初我使用 Arduino 测试外设、以便 IAM 确保外设工作正常

Arduino 中有一个名为 Serial.write ("data")的函数、用于发送字节。 我确定 UARTCharPut (UART2_base、data)等效于 Arduino Serial.write()或不是??

下面提到了我的 Arduino 代码、该代码工作正常

Val = analogRead (analogPin);

mySensVals[i]=val;


i= i+1;

serial.write (0xFE);
serial.write (0x03);
serial.write (0x01);
serial.write (0x04);
serial.write (0x03);
serial.write (0x05);
serial.write (0x02);
serial.write (0x14);
serial.write (0x06);
serial.write (0x14);
serial.write (0xFD);
serial.write (0xFA);
serial.write (240);

for (i=0;i<=239;i++)

serial.write (mySensVals[i]);

下面显示了我的 TM4C129代码、它不会打印与 Arduino 代码相同的结果

uint8_t CH 1therm[11]={0xFE、0x03、0x01、0x04、0x03、0x05、0x02、0x14、0x06、0x14、0xFD};
volatile Int32_t CH 1thermdata[240];

CH 1thermdata[g]=ui32ADC0Value[0];

G=g+1;

如果(g=240)

G=0;

for (i=0;i<=10;i++)

UARTCharPut (UART2_base、CH 1therm[i]);

UARTCharPut (UART2_base、0xFA);
UARTCharPut (UART2_base、0xF0);


for (i=0;i<=239;i++)

UARTCharPut (UART2_base、CH 1thermdata[i]);



请推荐一些解决方案!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sumit、

    是的,UARTCharPUT()向 UART 端口发送一个字节,以进行硬件控制的传输。

    您是否可以访问 PC 终端或逻辑分析仪以可视化发送的数据? 如果是:
    -您能否判断是否正确发送了第一个序列(11字节的"固定"序列)?
    -您对 ADC 转换序列有什么期望? 您正在读取240字节的模拟转换、但您没有显示如何捕捉它... 您是否第一次创建具有240个已知值的手动数组以测试输出? 您能看到这些手动创建的字节被发送了吗?

    此外、您不会显示 UART 配置。 您是否使用了正确的波特率、系统时钟、长度、奇偶校验等?
    是否已将打印机正确连接到 UART2端口? 您是否配置了 GPIO?
    您的打印机是否接受 Tiva 3.3V 电平的 TTL? 或者它们之间是否有合适的 RS232转换器?

    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是相当混乱和矛盾的。

    一个示例

    [报价用户="Sumit Mourya"]在 Arduino 中有一个名为 Serial.write ("data")的函数,用于发送字节。

    您建议 Serial.Write 发送字符串

    和这里

    [引用 user="Sumit Mourya"] Serial.write (0xFE);

    您建议它发送一个字节。

    您是否有机会使用一组 C++重载函数? 如果是、则它们与 UARCHARPut 不同。 如果不是、则说明中存在错误(或至少缺失)。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bruno、

    感谢您为我提供调试问题的建议!! 它实际上帮助我意识到了这个问题。代码中没有任何错误!!

    问题是我重复 while (1)循环中的代码、这使打印机混淆、并且打印垃圾。 相反、我移动了函数中的所有打印代码、并使用用户开关(PJ0)调用要打印的函数。 基本上、我只需将所有数据发送到打印机一次即可进行打印。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、

    这是一个拼写错误。
    我应该改为写入 Serial.write(data)!!
    无论如何我的问题都得到了解决。 感谢您的回复