AT32F425 LIN 有人调试过吗?
本帖最后由 lvben5d 于 2022-8-2 14:11 编辑LIN总线具备回环模式,当你TXD的时候,你的RXD引脚会收到总线的信息。
发现AT32F425 , 首先接收串口中断进入的 字节接收中断,然后才是break BFF中断。 如果硬件上不能做区分,用户软件层面就必须做区分了。GD32E103的主机模式调试OK,移植到AT32F425,我发现break后,发送0x55 ,接收这边好像很容易收不到。不知道为什么,理论上来说,回环会进接收中断。解决 : 原来是 AT32F425 接收 BFF中断后 马上发送0x55 会导致发送不出0x55, 导致接收不到,解决办法 如下
delay_us(2); //发送0x55之前 软延迟2us再发。 我波特率19200 如果没有延迟,绝对收不到0x55回环~
usart_data_transmit(USART1, 0x55);
本帖最后由 mark一江水 于 2022-8-1 13:21 编辑
确实rxne接收标志会先于bff置位,并先来中断,rm也是这样描述的,没问题哦。同一个中断向量里,但是两个不同的标志位,也好区分。
本帖最后由 lvben5d 于 2022-8-2 14:11 编辑
AF32F425 LIN主机模式 没有调通。 break后,我发送0x55, 很多时候 没有回环收到,导致超时,而GD32E103 我全部调通了。
目前不知道哪里问题。
gpio_init_type gpio_init_struct;
/* configure the uart1 Rx pin */
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
gpio_init_struct.gpio_pins = GPIO_PINS_7;
gpio_init_struct.gpio_pull = GPIO_PULL_UP;
gpio_init(GPIOB, &gpio_init_struct);
gpio_init_struct.gpio_pins = GPIO_PINS_6;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(GPIOB, &gpio_init_struct);
gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE6, GPIO_MUX_0);
gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE7, GPIO_MUX_0);
/* configure usart2 param */
usart_init(USART1, SysInfo.Usbd2lin_baudrate, USART_DATA_8BITS, USART_STOP_1_BIT);
usart_transmitter_enable(USART1, TRUE);
usart_receiver_enable(USART1, TRUE);
usart_interrupt_enable(USART1, USART_RDBF_INT, TRUE);
usart_interrupt_enable(USART1, USART_BF_INT, TRUE);
usart_break_bit_num_set(USART1, USART_BREAK_11BITS);
usart_enable(USART1, TRUE);
usart_lin_mode_enable(USART1, TRUE);
问题解决,楼1 我描述了!
mark一江水 发表于 2022-8-1 10:54
确实rxne接收标志会先于bff置位,并先来中断,rm也是这样描述的,没问题哦。同一个中断向量里,但是两个不 ...
这个技术手册,能提供一下连接么 没有调试过,帮顶一下。 没用过LIN,LIN的优势在哪里了?
页:
[1]