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/TM4C1294NCPDT:TM4C

Guru**** 2455360 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/639265/ccs-tm4c1294ncpdt-tm4c

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

大家好、

我将 TM4C1294NCPDT 微控制器用于我的新开发、在这方面、我很好地使用了计时器、I2C、UART 和其他外设。

现在、我希望 CAN 模块 建立与我的 Salve 板的通信、为此、我尝试将 CAN0模块与 PA0、PA1结合使用。

我不熟悉 CAN 模块1。

我编写了代码、并在网上研究了示例。 我认为数据传输不能正常工作。

下面附上了屏幕截图、我在下面粘贴了代码。 我认为中断处理程序工作正常

unsigned char CAN_TX_buff [100];

int main (空)

SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

GPIOPinConfigure (GPIO_PA0_CAN0RX);

GPIOPinConfigure (GPIO_PA1_CAN0TX);

GPIOPinTypeCAN (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);

CANInit (CAN0_BASE);

CANBitRateSet (CAN0_BASE、SysCtlClockGet ()、50000);

CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);

IntEnable (INT_CAN0);

CANEnable (CAN0_BASE);

tCANMsgObject sCANMessage;

uint8_t * pui8MsgData;

CAN_TX_buff [0]= 11;

CAN_TX_buff [1]= 0x0F;

CAN_TX_buff [2]= 0;

CAN_TX_buff [3]= 0;

CAN_TX_buff [4]= 0;

CAN_TX_buff [5]= 0;

CAN_TX_buff [6]= 0;

CAN_TX_buff [7]= 1;

pui8MsgData =(uint8_t *)&CAN_TX_buff;

while (1)

sCANMessage.ui32MsgID = 1;

sCANMessage.ui32MsgIDMask = 0;

sCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;

sCANMessage.ui32MsgLen = 8;

sCANMessage.pui8MsgData = pui8MsgData;

Set.Spindle_Opering_Mode = 1;

/*机器序列*/

if (set.Spindle_Opering_Mode = 0)

//check_all_move_stat();

//process_manual_oper();

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

//现在等待1秒后再继续

SimpleDelay();

//

CANIntHandler ()

uint32_t ui32Status;

//读取 CAN 中断状态以查找中断原因

ui32Status = CANIntStatus (CAN0_BASE、CAN_INT_STS_CAUST);

if (ui32Status = CAN_INT_INTID_STATUS)

ui32Status = CANStatusGet (CAN0_BASE、CAN_STS_CONTROL);

否则、如果(ui32Status = 1)

CANIntClear (CAN0_BASE、1);

其他

//可以在此处执行伪中断处理。

此致

Yuvaraj

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

    [引用 user="Yuva Raj ]'我在网上编写了代码,并举例说明。 我认为数据传输不能正常工作。

    不确定您所参考的在线示例。 TivaWare 中有一个 CAN 示例。 请转到 \examples\peripheral\CAN、其中提供了多个示例。  

    当您说变速器不工作时、您是否能做到具体? 您是如何设置 CAN 总线的? 您是否在总线上为每个节点配备了收发器。 总线上是否有合适的终端电阻器。  

    另一个问题是、如果您使用的是 LaunchPad、还是这是您的定制板? 如果您使用的是 LaunchPad、则需要更改 JP4和 JP5上的跳线设置、以便将 CAN 信号连接到 BoosterPack X6连接器。  

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

    检查我随附的屏幕截图、其中 CAN 错误状态显示总线关闭状态、警告状态、错误被动位被置位、而我在 CCS7.2中查看寄存器窗口。 为什么设置这些误差位...??

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

    如果您断开总线、则意味着发送器错误计数器值大于255。 请参阅 CAN 协议。 通常情况下、从脱离总线恢复的机制是复位 CAN 节点。 我问过您如何设置 CAN 总线、总线上是否有收发器和适当的终端电阻器、但您没有回复我。 您在总线上有多少个节点? 您是否从总线上的任何接收器获得了应答? 这些问题可供回答、有助于调试问题。 另请使用示波器监控发送器的 CAN 总线和 TX/RX 引脚。

    由于您说您不熟悉 CAN、我建议您从 TivaWare CAN 示例开始。 请参阅中的示例 \examples\peripheral\can