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.

[参考译文] TMS320F280049:LCD2004显示问题

Guru**** 2391175 points
Other Parts Discussed in Thread: C2000WARE, PCF8574

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1353343/tms320f280049-lcd2004-display-problems

器件型号:TMS320F280049
主题中讨论的其他器件:C2000WAREPCF8574

e2e.ti.com/.../Init.h

e2e.ti.com/.../1321.main2.c

大家好、我有几个问题要问 LCD2004与 PCF8574T 通信到 F280049使用 I2C、我们想发送 F280049 GPIO26 (SDA)、GPIO27 (SCL)中的一个字母或数字让它显示在 LCD2004屏幕上、 但我们注意到、C2000中没有可使用的 LCD 库、因此我给它一个尝试、但没有发生任何情况、问题是否可能出在 PCF8574T 中? 下面是我的代码,你能帮我找出问题在哪里或者我需要添加到代码中的东西,谢谢! (如果有什么我们可以把它作为参考,请告诉我,谢谢!)

//main.c

#include "F28x_Project.h"
#include "Init.h"

空 main (void)
{
//初始化系统控制、GPIO 和 I2C
InitSysCtrl();
init_gpio();
INIT_I2C();

//设置 I2C 从地址
I2caRegs.I2CSAR.all = 0x27;//更正为0x27

//将光标设置到第二行的第一个位置
I2caRegs.I2CCNT = 1;
I2caRegs.I2CDXR.all = 0xC0;//将地址设置为0xC0

//将字符'A'发送到 LCD
I2caRegs.I2CCNT = 1;
I2caRegs.I2CDXR.all ='A';//发送字符'A'

//设置 I2C 传输模式
I2caRegs.I2CMDR.bit.MST = 1;
I2caRegs.I2CMDR.bit.TRx = 1;
I2caRegs.I2CMDR.bit.STT = 1;

//等待传输完成
while (I2caRegs.I2CSTR.bit.BB == 1){}

//停止 I2C 传输
I2caRegs.I2CMDR.bit.stp = 1;

//此处可以添加其他操作或循环

while (1){}

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

    您好!

    我们没有用于使用 I2C 与 LCD 屏幕进行通信的库。  C2000Ware_5_02_00_00\driverlib\f28004x\examples\i2c 中存在 I2C 的示例。 您可以将这些示例用作设置 I2C 外设并与其进行通信的模板。

    很遗憾、 您的帖子中没有提供足够的信息来进一步帮助我。 您需要全面调试程序、通信发送/接收帧等。要弄清 LCD 为什么不响应 I2C 通信、我无法自行验证这一点。 验证 SCL 和 SDA 是否符合预期、查找 NACK、观察状态位并执行其他调试步骤、然后继续执行。  一旦您缩小了问题的根源、让我知道。

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

    您好、Wang、

    Omar 提到调试 I2C 外设使用 CCS 寄存器视图、并参阅 x49c MCU 技术资源手册(TRM)、以便为 PCF8574正确配置 I2C。 关于图形字符发生器、可能需要一些 C 编程、而不仅仅是到 I2C 远程端口的端口字母"A"串行数据。 以下文章链接可能有助于回答一些问题。  

    Arduino LCD 20x4 I2C 示例(LCD 2004 I2C 教程)(deepbluembedded.com)

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

    谢谢你的建议,顺便说一句,我已经看到这样的例子之前,但我没有找到任何有效的地址,让句子显示在屏幕的液晶屏上(因为他们都是 Arduino ,我不知道是否有用或没有)。

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

    您好,Amir 先生,

    感谢您的建议。 我们已经对一些信息进行了研究、并对部分规范进行了修订。 此外、我们已经检查了寄存器的状态、发现 GPIO27和 GPIO26包含数据(GMUX 和 MUX、它们决定了 GPIO 的功能、特别是 I2C SDA 和 I2C SCL)。 但是、尽管如此、LCD 屏幕上不显示任何内容。

    我们怀疑问题可能与地址有关、因为我们尚未通知 LCD 在何处显示信息。 在研究 Arduino LCD 使用的其他示例时、我们发现它们都使用光标库。 在未使用光标的情况下、它们仍会在输入显示的值或数据之前初始化光标。

    对于如何在不使用库的情况下设置光标或如何通知 LCD 在指定位置显示数据的位置、您有什么建议吗?

    另外、我们不确定如何验证 LCD 是否确实按正确的顺序接收了数据。 由于 LCD 只有四个引脚(VCC、GND、SDA、SCL)、因此我们无法在没有显示屏的情况下进行检查、这是我们目前面临的主要挑战。

    此数据表可能对您有所帮助:

    用于 I2C 总线的 PCF8574远程8位 I/O 扩展器数据表(修订版 J)

    TMS320F28004x 实时微控制器技术参考手册(修订版 G)

    TMS320F28004x 实时微控制器数据表(修订版 G)

    Amir 先生、感谢您的参与和帮助。

    e2e.ti.com/.../I2C_5F00_retry.zip

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

    您好、Wang:

    为了进一步说明我在初始博文中所述内容、除非 I2C 外设或 F28004x 器件本身存在问题、否则 TI 无法提供支持。 LCD2004和  PCF8574T 不是 TI 产品、因此我们对它们不提供有效的支持。

    如果您认为问题在于 I2C 通信本身、则需要使用通信分析器来验证 I2C 外设的错误行为。 如果您能够验证这一点、敬请告知、否则您将需要从更一般的工程论坛获得支持、因为 E2E 专注于 TI 器件本身的支持。

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

    我认为您需要通过字符库 CCS 项目导入函数。 GitHub 具有库开放源码、可能编写了 C++、因此它可能需要在某些函数中进行一些重写。 PCF8574仅转换 LCD 输入并行地址矩阵的串行数据、不包含预定义的 ASCII 字符单元。 因此、LCD 需要来自 MCU 的输入来通过打开/关闭每个点来形成每个字母。 然后、代码可以使用字符串或单个字母来输出简单文本、就像您尝试执行上述操作一样、但会调用导入的库中的函数。