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/TM4C1294KCPDT:CAN_Tx_Configuration

Guru**** 2595770 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/968321/ccs-tm4c1294kcpdt-can_tx_configuration

器件型号:TM4C1294KCPDT

工具/软件:Code Composer Studio

我已经在源代码中添加了示例(针对 CAN 数据 TX 的 simple_tx 代码)代码并运行代码。 这已成功执行并运行、但仅生成错误中断。 我对配置进行了一些更改、但没有得到结果。 您能解释一下如何配置 CAN 通信模块。   

我在下面附上了我的代码、

空 CANIntHandler()

uint32_t ui32Status;

ui32Status = CANIntStatus (CAN0_BASE、CAN_INT_STS_CAUST);

if (ui32Status = CAN_INT_INTID_STATUS)

ui32Status = CANStatusGet (CAN0_BASE、CAN_STS_CONTROL);
SEND_String ("错误中断\n");
G_bErrFlag = 1;
// g_ui32MsgCount++;

否则、如果(ui32Status = 1)

SEND_String ("TX 中断\n");
CANIntClear (CAN0_BASE、1);

G_ui32MsgCount++;

G_bErrFlag = 0;

其他

SEND_String ("意外中断\n");

空 UART_Init (空)

SysCtlPeripheralEnable (SYSCTL_Periph_UART5);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_5);
GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_5、0);//RX 使能

GPIOPinConfigure (GPIO_PC6_U5RX);
GPIOPinConfigure (GPIO_PC7_U5TX);
GPIOPinTypeUART (GPIO_PORTC_BASE、GPIO_PIN_6 | GPIO_PIN_7);

UARTConfigSetExpClk (UART5_BASE、g_ui32SysClock、19200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

IntEnable (INT_UART5);
// UARTIntEnable (UART5_BASE、UART_INT_RX | UART_INT_RT);
IntMasterEnable();


int main (空)

G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_20MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
tCANMsgObject sCANMessage;
UART_Init();

uint32_t ui32MsgData;
uint8_t * pui8MsgData;

pui8MsgData =(uint8_t *) ui32MsgData;

SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

GPIOPinConfigure (GPIO_PA0_CAN0RX);
GPIOPinConfigure (GPIO_PA1_CAN0TX);

GPIOPinTypeCAN (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

CANInit (CAN0_BASE);

CANBitRateSet (CAN0_BASE、g_ui32SysClock、50000);

CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);

IntEnable (INT_CAN0);

CANEnable (CAN0_BASE);

ui32MsgData = 0;
sCANMessage.ui32MsgID = 1;
sCANMessage.ui32MsgIDMask = 0;
sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sCANMessage.ui32MsgLen = sizeof (pui8MsgData);
sCANMessage.pui8MsgData = pui8MsgData;

TX
while (1)

SEND_String ("Sankar");
// SysCtlDelay (g_ui32SysClock/2);

CANMessageSet (CAN0_BASE、1、&sCANMessage、MSG_OBJ_TYPE_TX);

SysCtlDelay (g_ui32SysClock/2);

if (g_bErrFlag)

// g_bErrFlag = 0;
SEND_String ("错误-电缆已连接?\n");

其他

String_TO_Int (g_ui32MsgCount);
send_String ("总数=");
SEND_String (Data_Buffer);
SEND_String ("\n");

ui32MsgData++;

IF (CANStatusGet (CAN0_BASE、CAN_STS_CONTROL)& CAN_STATUS_BUS_OFF)

SEND_String ("已输入此条件\n");
CANEnable (CAN0_BASE);
// SysCtlDelay (g_ui32SysClock/2);

while (CANStatusGet (CAN0_BASE、CAN_STS_CONTROL)& CAN_STATUS_BUS_OFF);


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

    您是否具有正确配置的 CAN 网络以及可以确认 CAN 消息的收发器和另一个节点? 如果没有来自其他节点的确认、即使正确配置的消息也最终会生成错误。

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

    感谢您的回复。

    现在、我了解了错误的位置。

    此致、

    Sankareswaran Muthuraj