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.

[参考译文] CCS/TMS570LS0714:CAN 作为 GIO 输入

Guru**** 2927270 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/966298/ccs-tms570ls0714-can-as-gio-input

器件型号:TMS570LS0714
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

大家好、我正在尝试使用 CAN 引脚作为 GIO。 我找到了代码并了解了如何将 TMS570LS 的 CAN_3用作 GIO 输出、但我不知道如何将寄存器集的值用作代码上的输入。 我使用以下函数代码将 CAN3寄存器设置为输出:

int SOC (int value){
如果(value==1){
canREG3->TIOC =(UINT32)((UINT32) 1U <<18U)
|(uint32)((uint32) 1U <<17U)
|(uint32)((uint32) 0U <<16U)
|(uint32)((uint32) 0U << 3U)
|(uint32)((uint32) 1U <<2U)
|(uint32)((uint32) 1U <<1U);
SOCbit=1;
}
否则、如果(value==0){
canREG3->TIOC =(UINT32)((UINT32) 1U <<18U)
|(uint32)((uint32) 1U <<17U)
|(uint32)((uint32) 0U <<16U)
|(uint32)((uint32) 0U << 3U)
|(uint32)((uint32) 1U <<2U)
|(uint32)((uint32) 0U << 1U);
SOCbit=0;
}
返回 SOCbit;
} 

使用卤素并检查 TRM 第24.17.31节、我将 CAN3_RX 设置为 GIO 输入:

canREG3->RIOC =(UINT32)((UINT32)0U <<18U)
|(uint32)((uint32) 0U <<17U)
|(uint32)((uint32) 1U <<16U)
|(uint32)((uint32) 0U << 3U)
|(uint32)((uint32) 0U <<2U)
|(uint32)((uint32) 0U << 1U); 

我的问题是、如何查看电子产品中是否有0或1? 在读取 TMR 部分24.27.31时、我假设我必须使用寄存器 CANREG3的位0、但我如何检查代码中的该位?

我无法写入:  

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

    尊敬的 Andrea:

    HALCoGen 包含特定于 CAN 驱动器的一些有用功能、其中包括:

    uint32 canIoRxGetBit (canBASE-t *节点)

    返回(节点->RIOC & 1U);

    其中节点等于 canREG1到3。  

    您可以尝试返回:"canREG3->RIOC &1U"以获取该 CAN 端口 RX 引脚的当前值。  

    请告诉我、这是否有助于回答您的问题。

    此致、

    安德烈