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.

[参考译文] TMS320F280025:LIN 寄存器配置问题

Guru**** 2465890 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1071312/tms320f280025-lin-register-configuration-problem

部件号:TMS320F280025
“线程:C2000WARE”中讨论的其它部件

尊敬的团队:

将 Lin 模块配置代码 f28034移植到 f280025后,我的客户发现芯片无法接收数据。 这两块芯片的 Lin 配置中有什么值得注意的吗?

以下是 f280025的代码:

EALLOW;

CpuSysRegs.PCLKCR19.bit.LIN_A = 1;

GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;		   //GPIO28 (LIN TX)
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;		   //GPIO29 (LIN RX)
GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 3;
GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 0x01;
GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0x03;
GpioCtrlRegs.GPAGMUX2.bit.GPIO28 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 2;
GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 2;
EDIS;

//Lin register configuration
EALLOW;
LinaRegs.SCIGCR0.bit.RESET = 0;
LinaRegs.SCIGCR0.bit.RESET = 1;
LinaRegs.SCIGCR1.bit.SWnRST = 0; 

LinaRegs.SCIPIO0.bit.RXFUNC = 1;  //These two sentences are not available on 28034.
LinaRegs.SCIPIO0.bit.TXFUNC = 1;  //Other configurations are the same as 28034.

LinaRegs.SCIGCR1.bit.SLEEP = 0;
LinaRegs.SCIFLR.bit.TXWAKE = 0;  
LinaRegs.SCIFLR.bit.TXEMPTY = 1;
LinaRegs.SCIFLR.bit.TXRDY = 1;
//Configure for data reception
LinaRegs.SCIGCR1.bit.RXENA = 1;
LinaRegs.SCIGCR1.bit.TXENA = 0;

LinaRegs.SCIGCR1.bit.TIMINGMODE = 1; //Asynchronous Timing
LinaRegs.SCIGCR1.bit.CLK_MASTER = 1; //Enable SCI Clock
LinaRegs.SCIGCR1.bit.CONT = 1;		 //Continue on Suspend

LinaRegs.SCISETINT.bit.SETRXINT = 1;
LinaRegs.SCISETINT.bit.SETTXINT = 1;
LinaRegs.SCIFORMAT.bit.CHAR = 0x7;
LinaRegs.SCIGCR1.bit.SWnRST = 1; 
       
EDIS;

LinaRegs.SCIPIO0.bit.RXFUNC = 1;
LinaRegs.SCIPIO0.bit.TXFUNC = 1;

这两个代码在28034上不可用。 其它配置与28034相同。

此外,上述配置方法只能在寄存器中查看寄存器配置。 我不知道如何在表达式中查看寄存器配置?

此致

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

    您好,

    您是否无法使用 C2000Ware 的 F28002x 驱动程序库示例来开发 LIN 代码? 可能缺少穿梭巴士配置差异,因此最好使用经过测试的 F28002x 驱动程序库示例。

    此外,还有几个问题:

    您是在 SCI 模式下使用 LIN 还是使用 LIN 通信?

    您在哪里设置波特率?

    您能否发送一份有关在表达式窗口中看到的内容的快照? 使用表达式窗口可以使用 LIN 正则表达式,您可以拍摄表达式窗口的快照吗? 您没有找到 LinaRegs,还是在运行代码后看不到配置的值?

    此致,

    尼拉夫

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

    你好,尼拉夫:

    这是表达式窗口和寄存器窗口的快照:

    此致

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

    关于使用  C2000Ware 的 F28002x 驱动程序库示例,由于这是我的论坛支持客户,我不知道为什么他使用注册表进行编程。 但是,如果我们使用寄存器编程,我们应该注意什么?

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

    您好,

    寄存器编程正常,但我主要关注两台设备之间的配置顺序。 如果你可以给我发送客户项目,我可以在我结束时尝试

    此外,请回答以下其他问题:

    1.客户使用的是 LIN 还是 SCI?

    2.如何配置波特率?

    3.客户是否通过 LIN 收发器传输数据,如果是,波特率配置为什么?

    此致,

    尼拉夫

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

    你好,尼拉夫:

    这是我客户的项目,感谢您的支持。

    e2e.ti.com/.../28002xProject_5F00_TI.rar

    客户告知主要问题是无法设置寄存器。 例如,在执行“linaregs. 定位器0。 位。 重置=1”,观察“linaregs”的值是否为。 定位器0。 位。 重置”仍为“0”。

    此致

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

    您好,

    我可以看到 Lina regs 在我的末尾得到更新。您是否尝试逐步通过代码,或者您是否设置了断点并将其运行到配置结束?

    此外,我发现配置是用于 SCI 而不是 LIN,LINMODE 未配置。

    此致,

    尼拉夫

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

    你好,尼拉夫:

    客户表示他的项目实际上配置了 SCI 功能,但他的问题是无法写入注册表。

    例如,在执行单步调试并执行以下语句后:

    LinaRegs。 SCIGCR1.位。 RXENA = 1;

    通过表达式窗口查看的结果如下:

    当他连续跑,然后停下来时,他看到的结果仍然是上图所示的结果,即,不能写入寄存器的值;

    看到您的屏幕截图,他有以下问题(即图片中的中文内容):

    由于 scigcr1 all = 0x010200A2;为什么位字段中的对应值仍为“0”?

    例如 ,SCIGCR1.bit.TIMIGMODE 和 SCIGCR1.bit.CLK_MASTER, 它们是否应该显示为1?

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

    您好,

    如果客户没有逐步执行代码并在配置上设置断点然后运行,他是否看到配置的 SCI 寄存器?

    根据您的问题,根据快照:

    由于某些原因,位字段似乎不显示更新的值。 但是,如果您查看内存映射和注册窗口,它们将被正确更新。

    我建议客户在调试时使用“注册”窗口查看配置更新。

    此致,

    尼拉夫

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

    你好,尼拉夫:

    客户告知位字段显示的问题似乎只是与 LIN 相关的寄存器,而不是其他的寄存器。 例如,对于项目中 IO 端口的配置,位字段显示为正常;

    此外,他想知道您能否收到客户项目的数据? 这是,接受中断可以进入吗?

    此致

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

    你好,邓,

    LIN 位于 VBUSP 桥上,具有字节可访问性,因此,这可能是比特显示无法正常工作的原因,因为其他外围设备具有 x16寻址。 无论如何,您应该能够检查内存映射或寄存器视图以确认配置。  

    给我们几天时间来检查客户项目的数据接收情况。 只需从项目内部的客户配置中确认它是 SCI 通信,而不是 LIN。

    此致,

    尼拉夫

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

    您好,格林,

    运行代码时,我看到 SCIGCR1位设置正确:

    运行代码时,未输入 RX-ISR (使用中断点测试)。 因此,配置或中断代码设置有误

    要进行调试,请首先使用 C2000Ware 中的“LIN_ex2_sci_loopback.c”示例。 查看客户设置中此 C2000Ware 示例是否出现任何错误。

    如果此示例没有错误,请修改此示例以从环回更改为外部连接。

    最后,如果外部连接与示例一起使用,请尝试移植到客户所需的最终代码。

    通过从这种已知良好的代码中进行小幅增量更改,它应该有助于快速解决问题/找到问题的根源。

    此致,

    文斯