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.

[参考译文] TMS570LS1224:将 MibSPI/CAN 引脚配置为 GPIO

Guru**** 2549240 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/1012618/tms570ls1224-configuring-the-mibspi-can-pins-as-gpio

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

我想知道在 CCS 中将 MibSPI/CAN 引脚配置为 GPIO (输入/输出)。 我需要在 Halcogen 中配置什么?

CAN1TX AS 的输入引脚(GIO)

CAN1RX AS 的输入引脚(GIO)

N2HET1[24]/MIBSPI1NCS[5] AS '输入引脚'(GIO)

MIBSPI1NENA/N2HET1[23]/ECAP4作为'输出引脚'(GIO)

MIBSPI5SOMI[0] as'输出引脚'(GIO)

MIBSPI5CLK AS 的输入引脚(GIO)

此外,如何使特定引脚成为 MIBSPI5CLK 输出 A“Logic High”。

我们非常感谢示例代码、但我可以理解是否有任何可用的代码。  一般说明可以、我将会对它们进行 mudme.

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

    您好!

    所有 MibSPI 引脚均可通过 SPIPCx 寄存器编程为 GIO 引脚。

    1.首先,将 MIBSPI5CLK 配置为 GIO:  mibspiREG5->PC0 &=~(9 <<0x1);//将0写入 SPIPC0寄存器的位9

    2.配置 BibSPI5CLK 的方向:  gioSetDirection (mibspiPORT5、0x1<<9);

    3.将引脚设置为高电平: gioSetBit (mibspiporT5、9、0x1); //设置 SPIPC4的位9 (SPICLK)

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

    CAN_TX 和 CAN_RX 引脚也可用作 GIO 引脚。 CAN TIOC 和 RIOC 寄存器用于设置引脚的方向和值。

    1.将 CAN 控制寄存器的 Init 位置位:canREG1->CTL |= 0x1;

    CANREG1->TIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);  // CAN_TX 作为输出、高电平

    CANREG1->RIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);  // CAN_RX 作为输出、高电平  

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

    我能不能知道你从哪里得到了这些信息以及我在 Halcogen 需要做什么?

    我需要如何在我的 CCS 代码中包含这些行? 要声明的任何变量?

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

    您可以使用 HALCOGen 将 MibSPI 或 DCAN 引脚启用为 GIO 引脚:

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

    我是否需要在下面的选项卡中启用 CAN、MIBSPI 驱动程序?

    cannInit();// CCS 中是否需要初始化函数调用?

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

    1.如果要使用 HALCOGen GUI 配置 MibSPI 或 CNA 引脚、则需要启用这2个模块、并运行模块初始化以操作引脚、例如将一个 Mibspi 引脚设置为高电平。

    2.如果不使用 GUI 配置 MibSPI 和 CAN 引脚、则无需启用这两个模块。 以下是示例代码:

    #include "hL_mibspi.h"
    #include "HL_CAN.h"
    /*用户代码结束*/
    int main (空)

    /*用户代码开始(3)*/
       mibspiREG1->GCR0 = 0x1;
       mibspiREG1->PC0 =~(0x1 << 9);
       gioSetDirection (mibspiPORT1、0x1<<9);
       gioSetBit (mibspiporT1、9、0x1);//设置 SPIPC4的位9 (SPICLK)

       canREG1->CTL |= 0x1;
       CANREG1->TIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_TX 作为输出、高电平
       CANREG1->RIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_RX 作为输出、高电平   

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

    我尝试了上述步骤、但遇到了以下错误。 请告诉我接下来需要做什么。

    只有 GIO 在 Halcogen 中被启用。
    >>编译失败
    source/subdir_rules.mk:9:目标'source/sys_main.obj'的配方失败
    "../source/sys_main.c、第53行:致命错误#1965:无法打开源文件"hL_mibspi.h"
    1在编译"../source/sys_main.c 时检测到灾难性错误。
    编译已终止。
    gmake:***[source/sys_main.obj]错误1.
    编译文件:"../source/can.c
    调用:ARM 编译器
    "c:/ti/ccs1011/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/bin/armcl -mv7R4 --code_state=32 --float_support=VFPv3D16 --include_path="C:/Users/sakthidav/Desktop/tms570/can_gpio /source/can.c --include_path="C:/Users/sakthidav/Desktop/tms570/can_gpio/include --include_path="C:/ti/ccs1011/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/include --g --diag_warning=225 --display_path="a-preproc_code.come_abi_romage=d="-preproc_abi_code.come_romage="-inategrom_abi_abi_abi_code.come"--abi_rom_abi_rom_rom_code.com_abi_abi_rom_en_en_en_en_enus_code.
     
    >>编译失败
    source/subdir_rules.mk:9:目标'source/CAN.obj'的配方失败
    "../source/can.c、第1051行:错误#20:标识符"CAN1_CTL_CONFIGVALUE "未定义
    "../source/can.c、第1052行:错误#20:标识符"CAN1_ES_CONFIGVALUE "未定义
    "../source/can.c、第1053行:错误#20:标识符"CAN1_BTR_CONFIGVALUE "未定义
    "../source/can.c、第1054行:错误#20:标识符"CAN1_TEST_CONFIGVALUE "未定义
    "../source/can.c、第1055行:错误#20:标识符"CAN1_ABOTR_CONFIGVALUE "未定义
    "../source/can.c、第1056行:错误#20:标识符"CAN1_INTMUX0_CONFIGVALUE "未定义
    "../source/can.c、第1057行:错误#20:标识符"CAN1_INTMUX2_CONFIGVALUE "未定义
    "../source/can.c、第1059行:错误#20:标识符"CAN1_INTMUX3_CONFIGVALUE "未定义
    "../source/can.c、第1060行:错误#20:标识符"CAN1_TIOC_CONFIGVALUE "未定义
    "../source/can.c、第1061行:错误#20:标识符"CAN1_RIOC_CONFIGVALUE "未定义
    在编译"../source/can.c 中检测到10个错误。
    gmake:***[source/CAN.obj]错误1.
    gmake:目标"全部"不会由于错误而重新生成。

    ****构建完成****



    /*用户代码开始(0)*/
    /*用户代码结束*/

    /*包含文件*/

    #include "sys_common.h"

    /*用户代码开始(1)*/
    #include "hL_mibspi.h"
    #include "HL_CAN.h"
    #include "system.h"
    #include "Gio.h"



    /*用户代码结束*/

    /**@fn void main (void)
    *  @应用程序主函数简介
    *  @请注意、默认情况下、此函数为空。
    *
    *  此函数在启动后调用。
    *  用户可以使用此函数来实现应用程序。
    *

    /*用户代码开始(2)*/
    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/
        mibspiREG1->GCR0 = 0x1;
       mibspiREG1->PC0 =~(0x1 << 9);
        gioSetDirection (mibspiPORT1、0x1<<9);
       gioSetBit (mibspiporT1、9、0x1);//设置 SPIPC4的位9 (SPICLK)

        canREG1->CTL |= 0x1;
        CANREG1->TIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_TX 作为输出、高电平
        CANREG1->RIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_RX 作为输出、高电平

    返回0;
    /*用户代码开始(4)*/
    /*用户代码结束*/

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

    1.您需要将 include 文件夹添加到#include 搜索路径。 这可以在项目正确/Arm 编译器/Incluse 选项中进行

    2.如果 CAN 模块未启用、HALCoGen 将不会为 CAN (CAN.c)生成源代码。 但我注意到、您尝试编译 CAN.c、但遇到了一些错误。

    如果 CAN 模块被启用并且 CAN.c 之前已经生成、那么在 CAN 模块被禁用后、CAN.c 将不会被移除。 您必须手动删除源代码文件。

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

    非常感谢 QJ Wang、

    它现在正在工作!

    我使用的代码:


    /*用户代码开始(0)*/
    /*用户代码结束*/

    /*包含文件*/


    /*用户代码开始(1)*/
    #include "mibspi.h"
    #include "CAN.h"
    #include "Gio.h"
    /*用户代码结束*/


    /*用户代码开始(2)*/
    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/
       mibspiREG1->GCR0 = 0x1;
            mibspiREG1->PC0 =~(0x1 << 8);
            gioSetDirection (mibspiPORT1、0x1<<8);
            gioSetBit (mibspiporT1、8、0x1);//设置 SPIPC4的位9 (SPIENA)

            canREG1->CTL |= 0x1;
            CANREG1->TIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_TX 作为输出、高电平
            CANREG1->RIOC =(0x0 << 3)|(0x1 << 2)|(0x1 << 1);// CAN_RX 作为输出、高电平
    /*用户代码结束*/

       返回0;



    /*用户代码开始(4)*/
    /*用户代码结束*/