Thread 中讨论的其他器件:controlSUITE、
工具/软件:Code Composer Studio
大家好、
除 CANB 模块外、我想使用 CANA 模块。 我已经阅读了"用户指南"、但我无法理解是否只能对 GPIO4041或其他信号进行重新路由。
此外、我已经尝试通过相应地更改 GPIO 和 MUX 值来使用 CANA。 下面是我已从 controlSUITE 外部传输示例中修改的代码。 这对于 CANB 来说是很好的、但对于 CANA 来说不是很好。
我的 J11、J13跳线配置是否有问题、或者 除了电路板背面的 J9高密度连接器之外、没有其他方式输出 CANA 信号?
任何答案都将不胜感激!
#include "F28x_Project.h" #include #include #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "inc/hw_can.h" #include "driverlib/can.h" // define LED_PIN_RED 31 #define LED_PIN_blue 34 #define MSG_DATA_LENGTH 4 #define TXMSG_CANMSG_GET_Message 1 / CANGIN_0 = unsignatile Data 1;CANMsgchar 4 // //函数原型 // //// Main // void main (void) { // //初始化系统控制: // PLL、安全装置、启用外设时钟 // InitSysCtrl(); // //初始化 GPIO 并为 CANTX/CANRX 配置 GPIO 引脚 //在模块 A 和 B 上 // InitGpio(); // //为 CAN-A TX/RX 和 CAN-B TX/RX 设置 GPIO 引脚多路复用器 // GPIO_SetupPinMux (18、GPIO_MUX_CPU1、3);//GPIO10 - CANRXB GPIO_SetupPinOptions (18、GPIO_INPUT、GPIO_异 步); GPIO_SetupPinMux (19、GPIO_MUX_CPU1、3);//GPIO8 - CANTXB GPIO_SetupPinOptions (19、GPIO_OUTPUT、GPIO_PushPull); // //设置 LED 的 GPIO 引脚多路复用器 // GPIO_SetupPinMux (34、GPIO_MUX_CPU1、0); GPIO_SetupPinOptions (34、GPIO_OUTPUT、GPIO_PushPull); GPIO_SetupPinMux (31、GPIO_MUX_CPU1、0); GPIO_SetupPinOptions (31、GPIO_OUTPUT、GPIO_PushPull); //初始化 CAN 控制器 // CANInit (CANA_base); // //设置可以从 PLL 输出时钟计时 // CANClkSourceSelect (CANA_base、0);// 500kHz CAN 时钟 // //为每个模块将 CAN 总线位速率设置为500kHz //此函数为标称配置设置 CAN 总线时序。 //您可以使用实现对 CAN 总线时序的更多控制 //函数 CANBitTimingSet()代替这个函数(如果需要)。 //此外、请查阅器件数据表以了解更多相关信息 // CAN 模块计时。 // CANBitRateSet (CANA_base、200000000、50000); // //清除所有中断并初始化 PIE 矢量表: //禁用 CPU 中断 // Dint; // //将 PIE 控制寄存器初始化为默认状态。 //默认状态为禁用所有 PIE 中断和标志 //被清除。 // InitPieCtrl(); // //禁用 CPU 中断并清除所有 CPU 中断标志 // IER = 0x0000; IFR = 0x0000; InitPieVectTable(); //启用全局中断和更高优先级的实时调试事件 EINT; //启用全局中断 INTM ERTM; //启用全局实时中断 DBGM // //初始化用于发送 CAN 消息的发送消息对象。 //消息对象参数: // 消息标识符:0x5555 // 消息 ID 掩码:0x0 // 消息对象标志:无 // 消息数据长度:4字节 // 报文发送数据:txMsgData // sTXCANMessage.ui32MsgID =0x203; sTXCANMessage.ui32MsgIDMask = 0; sTXCANMessage.ui32Flags = 0; sTXCANMessage.ui32MsgLen = MSG_DATA_LENGTH; sTXCANMessage.pucMsgData = txMsgData; // //初始化要发送的发送消息对象数据缓冲区 // txMsgData[0]= 0x10; txMsgData[1]= 0x10; txMsgData[2]= 0x10; txMsgData[3]= 0x10; // //启动 CAN 模块 A 和 B 操作 // CANEnable (CANA_base); // //将消息从 CAN-A 发送到 CAN-B // for (;;) { CANMessageSet (CANA_base、TX_MSG_OBJ_ID、&sTXCANMessage、 MSG_OBJ_TYPE_TX); txMsgData[0]= 0x10; txMsgData[1]= 0x10; txMsgData[2]= 0x10; txMsgData[3]= 0x10; GPIO_WritePin (LED_PIN_RED、0); GPIO_WritePin (LED_PIN_BLUE、1); DELAY_US (1000*500); GPIO_WritePin (LED_PIN_RED、1); GPIO_WritePin (LED_PIN_BLUE、0); DELAY_US (1000*500); } }