主题中讨论的其他器件:HALCOGEN、
您好!
我尝试将 LIN2 TX/RX 引脚(T5/P4)用作从节点引脚。 但是、当我连接示波器时、我看到尽管在 HALCoGen 中选中了上拉复选框、但这些引脚并未上拉。 以下是 LIN.c 文件中的相关行:
/**-从重置中释放*/
linREG2->GCR0 = 1U;
/**-启动 LIN 配置
* -保持状态机处于软件复位状态
*
linREG2->GCR1 = 0U;
/** -启用 LIN 模式*/
linREG2->GCR1 = 0x40U;
/**-设置控制寄存器1
* -启用发送器
* -启用接收器
* -进入调试模式时停止
* -禁用环回模式
* -禁用/启用 HGENCTRL (使用 ID 字节进行屏蔽滤波)
* -使用增强校验和
* -启用多缓冲模式
* -禁用自动波特率调整
* -禁用睡眠模式
* -将 LIN 模块设置为主模块
* -启用/禁用奇偶校验
* -在 ID4和 ID5中禁用数据长度控制
*
linREG2->GCR1 |= 0x03000C60U
|(uint32)((uint32) 1U <<12U)
|(uint32)((uint32) 0U << 2U);
/**-设置最大波特率预分频器*/
linREG2->MBRSR =(uint32) 5155U;
/**-设置波特率预分频器*/
linREG2->BRS=(uint32) 357U;
/**-设置 RX 和 TX 接收屏蔽*/
linREG2->MASK =((uint32)((uint32) 0xFFU <<16U)|(uint32) 0xFFU);
/**-设置比较
* -同步定界符
* -同步间隔扩展
*
linREG2->COMP =((uint32)((uint32)(1U - 1U)<<8U)|((uint32) 13U - 13U));
/**-设置响应长度*/
linREG2->format =((linREG2->format & 0xFFF8FFFFU)|(uint32)(((uint32) 8U - 1U)<< 16U);
/**-设置 LIN 引脚功能模式
* - TX
* - RX
* - CLK
*
linREG2->PIO0 =((uint32) 4U |(uint32) 2U |(uint32) 0U);
/**-设置 LIN 引脚默认输出值
* - TX
* - RX
* - CLK
*
linREG2->PIO3=((uint32) 0U |(uint32) 0U |(uint32) 0U);
/**-设置 LIN 引脚输出方向
* - TX
* - RX
* - CLK
*
linREG2->PIO1 =((uint32) 0U |(uint32) 0U |(uint32) 0U);
/**-设置 LIN 引脚开漏使能
* - TX
* - RX
* - CLK
*
linREG2->PIO6 =((uint32) 0U |(uint32) 0U |(uint32) 0U);
/**-设置 LIN 引脚上拉/下拉使能
* - TX
* - RX
* - CLK
*
linREG2->PIO7=((uint32) 0U |(uint32) 0U |(uint32) 0U);
/**-设置 LIN 引脚上拉/下拉选择
* - TX
* - RX
* - CLK
*
linREG2->PIO8=((uint32) 4U |(uint32) 2U |(uint32) 1U);
/**-设置中断级别
* -位错误级别
* -物理总线错误级别
* -校验和错误级别
* -不一致的同步字段错误级别
* -无响应错误级别
* -帧错误级别
* -溢出错误级别
* -奇偶校验错误级别
* -标识符级别
* - RX 电平
* - TX 级别
* - 3个唤醒信号电平后超时
* -唤醒信号电平后超时
* -超时级别
* -唤醒电平
* -中断检测级别
*
linREG2->SETINTLVL =((uint32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U);
/**-设置中断使能
* -启用/禁用位错误
* -启用/禁用物理总线错误级别
* -启用/禁用校验和错误级别
* -启用/禁用不一致的同步字段错误级别
* -启用/禁用无响应错误级别
* -启用/禁用组帧错误级别
* -启用/禁用溢出错误级别
* -启用/禁用奇偶校验错误级别
* -启用/禁用标识符级别
* -启用/禁用 RX 电平
* -启用/禁用 TX 级别
* -启用/禁用3个唤醒信号电平后的超时
* -启用/禁用唤醒信号电平后的超时
* -启用/禁用超时级别
* -启用/禁用唤醒电平
* -启用/禁用中断检测级别
*
linREG2->SETINT =((UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000200U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U
|(UINT32) 0x00000000U);
/**-最终启动 LIN */
linREG2->GCR1 |= 0x00000080U;
/*用户代码开始(3)*/
/*用户代码结束*/
是否正确设置? 如果是、为什么不上拉?
谢谢、
SA