你好,我正在使用 TLE7258SJXUMA1 收发器和 TRAVEO T2G。 我连接了 Lin RX 端口 5.0 和 Tx 端口 5.1。 配置如下
#define LIN_RX_PORT GPIO_PRT5#define LIN_RX_PIN 0u#define LIN_RX_PIN_MUX P5_0_LIN0_LIN_RX7#define LIN_TX_PORT GPIO_PRT5#define LIN_TX_PIN 1u#define LIN_TX_PIN_MUX P5_1_LIN0_LIN_TX7#define LIN_EN_PORT GPIO_PRT5#define LIN_EN_PIN 2u#define LIN_EN_PIN_MUX P5_2_LIN0_LIN_EN7#define LIN_TYPE LIN0_CH7#define LIN_PCLK PCLK_LIN0_CLOCK_CH_EN7#define LIN_IRQN lin_0_interrupts_7_IRQn#define LIN_TYPE LIN0_CH7#define LIN_PCLK PCLK_LIN0_CLOCK_CH_EN7#define LIN_IRQN lin_0_interrupts_7_IRQn 我想把收发器用作从属设备。 我有 microchip 的 Lin 分析仪工具。
sta
tic const stc_lin_config_t lin_config ={ .bMasterMode = false, //If TRUE, corresponding channel = master mode, If FALSE, slave mode. .bLinTransceiverAutoEnable = true, //If TRUE, corresponding LIN channel transceiver is enabled automatically, If FALSE, firmware has to handle the transceiver enable signal manually .u8BreakFieldLength = 11u, //Break field length .enBreakDelimiterLength = LinBreakDelimiterLength1bits, //Break delimiter length {LinBreakDelimiterLength1bits = 1-bit length} .enStopBit = LinOneStopBit, //Stop bit length { LinOneStopBit = 1, LinTwoStopBit = 3 } .bFilterEnable = true//If TRUE, lin_rx_in filter operates. Median 3 operates on the last three "lin_rx_in" values};void Lin_init(){ /* Note: * LIN IP does oversampling and oversampling count is fixed 16. * Therefore LIN baudrate = LIN input clock / 16. */ Cy_SysClk_PeriphAssignDivider(LIN_PCLK, CY_SYSCLK_DIV_16_BIT, 0u); Cy_SysClk_PeriphSetDivider(CY_SYSCLK_DIV_16_BIT, 0u, (195u-1u)); // 60 MHz / 195 / 16 (oversampling) = 19231 Hz Cy_SysClk_PeriphEnableDivider(CY_SYSCLK_DIV_16_BIT, 0u); /* Initialize port settings */ PortInit(); Cy_Lin_Init(LIN_TYPE, lin_config); Cy_Lin_Enable(LIN_TYPE); lin_state = LIN_STATE_IDLE; /* Register LIN interrupt handler and enable interrupt */ Cy_SysInt_InitIRQ( lin_irq_cfg); Cy_SysInt_SetSystemIrqVector(lin_irq_cfg.sysIntSrc, LIN0_IntHandler); NVIC_SetPriority(CPUIntIdx7_IRQn, 7u); NVIC_ClearPendingIRQ(CPUIntIdx7_IRQn); NVIC_EnableIRQ(CPUIntIdx7_IRQn); /* LIN operation */ lin_state = LIN_STATE_RX_HEADER; Cy_Lin_SetInterruptMask(LIN_TYPE, CY_LIN_INTR_RX_HEADER_DONE | CY_LIN_INTR_RX_RESPONSE_DONE | CY_LIN_INTR_ALL_ERROR_MASK_SLAVE); Cy_Lin_SetCmd(LIN_TYPE, CY_LIN_CMD_RX_HEADER_RX_RESPONSE);}这是我的代码。 lin 工具在未连接 traveo 时会发送信号,但一旦我将其连接到 traveo,lin 信号就会消失,
通信也不会发生。 我的代码中没有中断。 lin 工具在未连接 traveo 时会发送信号,但一旦我将其连接到 traveo,lin 信号就会消失,通信也不会发生。 中断不来