主题: C2000WARE 中讨论的其他器件
工具/软件:
大家好:
我正在开发一个需要 LIN 通信的原型、因此我会告诉大家我的硬件和软件设置:
硬件:
- LAUNCHXL-F280039C 作为具有以下引脚的从节点:
- GPIO37 (LINTX)
- GPIO33 (LINRX)
- GPIO30 (WK)
- GPIO47 (EN)
- MIKROE-3816:包含一个 TLE7259-3
- 矢量 VN1630:作为主节点
软件:
- C2000Ware 4.01.00
我的软件实现非常简单:
#include "board.h" uint16_t rxData[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; void LinBase_Init(void) { LIN_initModule(LIN_VEHICLE_BASE); // // Enter Software Reset State // LIN_enterSoftwareReset(LIN_VEHICLE_BASE); LIN_setLINMode(LIN_VEHICLE_BASE, LIN_MODE_LIN_SLAVE); LIN_setCommMode(LIN_VEHICLE_BASE, LIN_COMM_LIN_USELENGTHVAL); LIN_setDebugSuspendMode(LIN_VEHICLE_BASE, LIN_DEBUG_COMPLETE); LIN_setChecksumType(LIN_VEHICLE_BASE, LIN_CHECKSUM_ENHANCED); LIN_setMessageFiltering(LIN_VEHICLE_BASE, LIN_MSG_FILTER_IDSLAVE); LIN_setBaudRatePrescaler(LIN_VEHICLE_BASE, 388U, 14U); //19236 bps LIN_setFrameLength(LIN_VEHICLE_BASE, 8U); LIN_setSyncFields(LIN_VEHICLE_BASE, 5U, 3U); LIN_setTxMask(LIN_VEHICLE_BASE, (uint16_t)(0xFFU)); LIN_setRxMask(LIN_VEHICLE_BASE, (uint16_t)(0xFFU)); LIN_enableParity(LIN_VEHICLE_BASE); LIN_enableMultibufferMode(LIN_VEHICLE_BASE); // // Finally exit SW reset and enter LIN ready state // LIN_exitSoftwareReset(LIN_VEHICLE_BASE); //Wake to LOW to assure WK pin on transiever on high GPIO_writePin(DIO_LIN_WK, 0); // EN to HIGH to assure the trainsiever is on NORMAL mode GPIO_writePin(DIO_LIN_EN, 1); } //The cyclic task is being called every 100 us void LinBase_CyclicRx(void) { if(LIN_isRxMatch(LIN_VEHICLE_BASE)) { /* Read the received data in the receive buffers then Clear the Interrupt status */ LIN_getData(LIN_VEHICLE_BASE, rxData); LIN_clearInterruptStatus(LIN_VEHICLE_BASE, LIN_INT_ALL); } }
因此、您知道收发器正在正常工作、因为它向 TX 引脚发送 LIN 接头和命令、下面有一些示波器证据:
通过这种配置、C2000可以读取主请求并将其转储到 rxData 数组中。
但是、我在 SCIFLR 上看到以下错误(正在设置 PBE、NRE、PE)。
所以这里有一些想法:
1.至于现在主器件正确发送标头和命令
2、配置和任务执行的是预期的,因为它获得了正确的 LIN 命令。
3、根据用户手册:
- PBE 是一个错误、表示 LIN 线路短接至 VBAT 或 GND (但由于我们有示波器图像、我们可以看到没有发生这种情况)
- 当在 TFRAME_MAX 内没有对主器件的标头做出响应时、会设置 nRE 位、但情况不应如此、因为在此消息中、主器件正在发送标头和帧。
- PE 位表示奇偶校验错误、在这种情况下、我不知道如何进行故障排除、我再次检查了波特率(正确)、我不知道是否需要更多配置。
在这方面、我希望得到你们的支持、因为我已经花了几天的时间努力找出一个简单的例子。
谢谢、
Martin