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.

[参考译文] TM4C123GH6PM:TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/604109/tm4c123gh6pm-tm4c123gh6pm

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123

您好!

  我正在使用 tm4c123并实现 CAN 协议。 在这里、我能够为 CAN0器件配置 GPIO 引脚。 但是、当 CANCTL 寄存器初始化时、寄存器中的 INIT 位不会被置位。 因此控制器不会移动到下一条指令。 我将使用 CCS 6.1.2、这里是我的代码。

空 CAN0_Init (空)

/*设置 CAN0模块 GPIO 端口 B 的引脚 PB4和 PB5 */
/* PB5 = Tx、PB4 = Rx */
*sysctl_RCGC0 |= 0x01000000;
* SYSCTL_RCGC2 |= 0x00000002;
*GPIO_CR |= 0x30;
*GPIOB_AMSEL &= 0x00;
*GPIOB_DEN |= 0x30;
*GPIOB_DIR |= 0x20;
*GPIOB_AFSEL_PB |= 0x30;
* GPIOB_PCTL_PB =(* GPIOB_PCTL_PB 和0xFF00FFFF)+ 0x00880000;

/*初始化 CAN0模块*/
*CANCTL |= 0x01;
while (* CANIF1CRQ & 0x00008000);

/*反向回路测试模式*/
*CANCTL |= 0x81;/* CAN 控制器处于测试模式*/
*CANTST |= 0x10;

/*比特率设置*/
*CANCTL |= 0x40;/*对 CANBIT 寄存器的写入访问*/
*CANBIT |= 0x0201;

/*不使用中断*/
*CANCTL &=~0x41;/* CAN 控制器处于测试模式*/

在上面我尝试写入 CANCTL 寄存器的代码中、它没有写入、而且它一直卡在该点、我通过放置断点来指向该点。 CAN0模块的 GPIO 管脚配置是否有问题??

我正在尝试使用该代码进行环回模式。 请解决我的问题

谢谢、

Venkatesh。

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

    Venkatesh、

    如果您使用直接寄存器编程、您可能无法在此论坛上获得任何支持。

    请使用 TivaWare 配置 GPIO 和 CAN 通信-错误很可能会神奇地消失、如果不是、这里的人将能够更快地提供帮助。

    您的编程将具有如下简单内容:

    SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
    GPIOPINTypeCAN (GPIO_PORTn_BASE、GPIO_PIN_0 | GPIO_PIN_1);
    SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
    CANInit (CAN0_BASE);
    CANMessageSet (CAN0_BASE、1、&sMsgObjectRx、MSG_OBJ_TYPE_RX);
    CANEnable (CAN0_BASE); 

    看到了吗? 使用和调试都要容易得多、如果需要的话。

    您可以在 TivaWare 安装的/docs 文件夹中找到详细手册。 用户指南文件为 SW-TM4C-DRL-UG.xxxx.pdf。

    布鲁诺

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

    谢谢 Bruno Saraiva、

    那么、这里是如何设置 CAN0模块的模式。 实际上、我希望在第一次测试 CAN 的回路模式、因为我没有两个板、所以我必须使用哪个 API 将其设置为回路模式。

    我已经阅读了星座库用户指南、但遗憾的是我没有找到相应的 API 来设置 CAN 模式。  

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

    我没有使用过 CAN、因此我无法保证这一点、但我认为 CAN 没有启用 TivaWare 的回路模式。 器件的数据表通知相关位:
    '通过将 CANTST 寄存器的 LBACK 位置位、CAN 控制器进入环回模式。 "

    您还可以在 Launchpad 上连接跳线以连接不同的 CAN 模块、或者直接将 Tx 连接到同一模块上的 Rx?

    当您说 Stellaris 时、您是指 TivaWare 吗? 旧名称不再存在、且 TivaWare 当前位于2.1.4。

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

    是的、确切地说、我使用的是 TivaWare 2.1.4.178和2.1.0.12573。 因此、正如我知道的、我可以通过设置 CANTST 中的 LBACK 位来测试回路模式、但我找不到相应的 API 来设置该 LBACK 位。 如有任何帮助、请提供帮助。

    谢谢、
    Venkatesh