Other Parts Discussed in Thread: LAUNCHXL-F28P65X, TLIN2029EVM, C2000WARE, SYSCONFIG
主题中讨论的其他器件: C2000WARE、 SysConfig、LAUNCHXL-F28P65X
工具/软件:
TI 团队大家好、
我正在使用 TLIN2029EVM 和 LaunchXL F28P65X 开发板在指挥官和响应者之间建立 LIN 通信。
目前、我正在使用 C2000-Ware 示例进行外部环回 (LIN_EX7)。 电源由外部提供、VBAT 为 12V、EVM 上的电流约为 10mA、输入 VCC 为 5V。
在硬件设置中、我在 指挥官侧连接了 TVS 二极管 (D3)。 我还拔下了响应器侧的跳线 JMP4、并且这两个器件的相应配置已经实现。
对于帮助确保 LIN 通信成功的任何建议或建议、我不胜感激。
下面、我添加了我正在使用的示例代码:
//
//包含的文件
//
#include “driverlib.h"</s>“
#include “device.h"</s>“
//
//定义
//
#define FRAME_LENGTH 0x8
#define LIN_PASS 0xABCD
#define LIN_FAIL 0xFFFF
//
//全局
//
易失性 uint32_t level0Count = 0;
易失性 uint32_t level1Count = 0;
易失性 uint32_t 矢量偏移= 0;
uint16_t result;
uint16_t 错误;
uint16_t txID = 0x1A、rxID = 0x1A;
Uint16_t txData[8]={0x11、0x34、0x56、0x78、0x9A、 0xAB、0xCD、0xEF};
uint16_t rxData[8]={0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF};
//
//主要
//
void main (void)
{
uint32_t dataIndex;
uint16_t 错误;
//
//初始化器件时钟和外设
//
设备初始化 ();
//
//初始化 LINTX/LINRX 的 GPIO 和配置 GPIO 引脚
//
device_initGPIO();
GPIO_setPinConfig (DEVICE_GPIO_CFG_LINTXA);
GPIO_setPinConfig (DEVICE_GPIO_CFG_LINRXA);
GPIO_setPinConfig (DEVICE_GPIO_CFG_LINTXB);
GPIO_setPinConfig (DEVICE_GPIO_CFG_LINRXB);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LINRXA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_LINRXA、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_LINRXA、GPIO_QUAL_ASYNC);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LINRXB、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_LINRXB、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_LINRXB、GPIO_QUAL_ASYNC);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LINTXA、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (DEVICE_GPIO_PIN_LINTXA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_LINTXA、GPIO_QUAL_ASYNC);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LINTXB、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (DEVICE_GPIO_PIN_LINTXB、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_LINTXB、GPIO_QUAL_ASYNC);
//
//初始化 LIN 模块
//
LIN_initModule (LINA_BASE);
LIN_initModule (LINB_BASE);
//
//将 LIN B 设置为响应者模式、将 LIN A 设置为指挥官模式
//
LIN_setLINMode (LINB_BASE、LIN_MODE_LIN_Responder);
LIN_setLINMode (LINA_BASE、LIN_MODE_LIN_Commander);
LIN_enableParity (LINA_BASE);
LIN_enableParity (LINB_BASE);
//
//在接收时将 ID 设置为匹配
//
LIN_setIDResponderTask (LINB_BASE、rxID);
LIN_setIDByte (LINB_BASE、rxID);
//
//设置帧长度(要传输的字节数)
//
LIN_setFrameLength (LINA_BASE、8);
LIN_setFrameLength (LINB_BASE、8);
//
//将数据写入 LINA 的 Tx 缓冲区
//
LIN_sendData (Lina_base、txData);
//
//设置消息 ID 以启动标头传输。
//这会导致将 ID 写入总线、然后是
//发送缓冲区中的数据。
//
txID = lin_generateParityID (txID);
LIN_setIDByte (LINA_BASE、txID);
//
//等待发送缓冲区为空并完成发送
//
while(!lin_isTxBufferEmpty (Lina_base));
//
//等待接收
//
while(!lin_isRxMatch (LINB_BASE));
LIN_clearInterruptStatus (LINA_BASE、LIN_INT_ALL);
LIN_clearInterruptStatus (LINB_BASE、LIN_INT_ALL);
//
//在接收缓冲区中读取接收的数据
//
lin_getData (LINB_BASE、rxData);
//
//验证发送的数据是否与接收到的数据匹配
//
对于 (dataIndex=0;dataIndex < 8;dataIndex++)
{
if (rxData[dataIndex]!= txData[dataIndex])
{
错误++;
}
}
//
//检查是否发生任何数据错误
//
if (error == 0)
{
结果= LIN_PASS;
}
暴露
{
结果= LIN_FAIL;
}
//
//示例已完成。 检查“Result"变量“变量以了解完成状态。
//
asm(“ ESTOP0“);
}
//
//文件结束
//














