[活动] 【G32R501 Micro-EVB测评】7.二维激光雷达扫描显示(三)UARTB通信问题

[复制链接]
86|8
本帖最后由 穿西装的强子 于 2026-1-11 23:02 编辑

在CPU1内UARTB使用了22和41引脚

360806957c7ca4440c.png
956116957c7d4401ac.png
根据例程进行配置,配置引脚为CPU1模式;
  1. //
  2.     // GPIO41 is the UART Rx pin.
  3.     //
  4.     GPIO_setMasterCore(LANHAI_GPIO_PIN_UARTRXDB, GPIO_CORE_CPU1);
  5.     GPIO_setPinConfig(LANHAI_GPIO_CFG_UARTRXDB);
  6.     GPIO_setDirectionMode(LANHAI_GPIO_PIN_UARTRXDB, GPIO_DIR_MODE_IN);
  7.     GPIO_setDrivingCapability(LANHAI_GPIO_PIN_UARTRXDB,GPIO_DRIVE_LEVEL_VERY_HIGH);
  8.     GPIO_setPadConfig(LANHAI_GPIO_PIN_UARTRXDB, GPIO_PIN_TYPE_PULLUP);
  9.     GPIO_setQualificationMode(LANHAI_GPIO_PIN_UARTRXDB, GPIO_QUAL_ASYNC);

  10.     //
  11.     // GPIO22 is the UART Tx pin.
  12.     //
  13.     GPIO_setMasterCore(LANHAI_GPIO_PIN_UARTTXDB, GPIO_CORE_CPU1);
  14.     GPIO_setPinConfig(LANHAI_GPIO_CFG_UARTTXDB);
  15.     GPIO_setDirectionMode(LANHAI_GPIO_PIN_UARTTXDB, GPIO_DIR_MODE_OUT);
  16.     GPIO_setDrivingCapability(LANHAI_GPIO_PIN_UARTTXDB,GPIO_DRIVE_LEVEL_VERY_HIGH);
  17.     GPIO_setPadConfig(LANHAI_GPIO_PIN_UARTTXDB, GPIO_PIN_TYPE_STD);
  18.     GPIO_setQualificationMode(LANHAI_GPIO_PIN_UARTTXDB, GPIO_QUAL_ASYNC);
  19.         
  20.          //
  21.     // Map the ISR to the wake interrupt.
  22.     //
  23.     Interrupt_register(INT_UARTB_RX, INT_UARTB_RX_IRQHandler);

  24.     Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);
  25.     Interrupt_setPriority(INT_UARTB_RX,2,0);

  26.     //
  27.     // Initialize UARTB and its FIFO.
  28.     //
  29.     UART_performSoftwareReset(UARTB_BASE);

  30.     //
  31.     // Configure UARTB for echoback.
  32.     //
  33.     UART_setConfig(UARTB_BASE, DEVICE_LSPCLK_FREQ, 460800, (UART_CONFIG_WLEN_8 |
  34.                                              UART_CONFIG_STOP_ONE |
  35.                                              UART_CONFIG_PAR_NONE));
  36.     UART_resetChannels(UARTB_BASE);
  37.     UART_clearInterruptStatus(UARTB_BASE,  UART_INT_RXRDY_BRKDT);
  38.     UART_enableModule(UARTB_BASE);
  39.     UART_performSoftwareReset(UARTB_BASE);

  40.     //
  41.     // Enable the TXRDY and RXRDY interrupts.
  42.     //
  43.     UART_enableInterrupt(UARTB_BASE,  UART_INT_RXRDY_BRKDT);
  44.         
  45.     Interrupt_enable(INT_UARTB_TX);
波特率在设置超过230400时数据异常,发送的数据和实际的对不上;例如460800波特率,收发完成不一样。
551866957c871cadc2.png
但是UARTA是没问题,这个不知道是哪里配置问题;
波特率的问题找到了,是USB转串口设备的问题
第二个问题是配置中断导致卡死
  1.    Interrupt_setPriorityGroup(INTERRUPT_PRIGROUP_PREEMPT_7_6_SUB_5_0);
  2.     Interrupt_setPriority(INT_UARTB_RX,2,0);
这两行加上之后就一直卡死无法继续,不知道是什么问题导致



灵犀幻影 发表于 2026-1-4 20:30 | 显示全部楼层
关于中断导致卡死的问题,可能是中断优先级设置不当或者中断服务程序有问题
HeartbeatEcho 发表于 2026-1-4 23:49 | 显示全部楼层
是不是中断函数没有写?
 楼主| 穿西装的强子 发表于 2026-1-5 10:22 | 显示全部楼层
灵犀幻影 发表于 2026-1-4 20:30
关于中断导致卡死的问题,可能是中断优先级设置不当或者中断服务程序有问题
...

不是中断卡死,是这两行导致卡死,不写这两行也能正常进入中断,就无法设置优先级了
 楼主| 穿西装的强子 发表于 2026-1-5 10:23 | 显示全部楼层
HeartbeatEcho 发表于 2026-1-4 23:49
是不是中断函数没有写?

写了中断函数,能正常进中断,就是这两行配置优先级写了之后就卡死了
FrostShimmer 发表于 2026-1-5 20:28 | 显示全部楼层
UARTB的时钟源频率 没有那么高吧
 楼主| 穿西装的强子 发表于 2026-1-5 20:51 | 显示全部楼层
FrostShimmer 发表于 2026-1-5 20:28
UARTB的时钟源频率 没有那么高吧

usb转串口问题
 楼主| 穿西装的强子 发表于 2026-1-5 20:52 | 显示全部楼层
没找到串口的idle模式怎么用,无法识别一串数据帧,需要自己处理
FrostShimmer 发表于 2026-1-6 10:07 | 显示全部楼层
明白了。还是115200bps的速率是安全的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

357

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
0