打印

STM32H7 UART7 DMA 发送模式触发帧错误

[复制链接]
280|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
roucun|  楼主 | 2018-8-4 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一下,USART3 使用DMA能正确发送数据,但是把同样配置放到UART7的时候 触发了 USART_ISR_FEvoid HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
{
  uint32_t isrflags   = READ_REG(huart->Instance->ISR);
  uint32_t cr1its     = READ_REG(huart->Instance->CR1);
  uint32_t cr3its     = READ_REG(huart->Instance->CR3);

  uint32_t errorflags;
  uint32_t errorcode;

  /* If no error occurs */
  errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));复制代码
errorflags 读取到的值是 0x006200D2

查看ISR的寄存器的FE被置1,但是这时候的数据已经发出去了,串口助手也接收到了,但是后续的发送就再也发不出去了。

手册中说到:当检测到去同步化,过度的噪声或break 字符时 该位由硬件置1.

这里的去同步化不明白时什么意思。使用非DMA的时候可以正常收发,MODBUS 收发数据也正常。那么为什么会出现这个错误呢?

CACHE配置的WT模式,数据定义在AXI SRAM。发送直接做了SCB_InvalidateDCache();

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

421

主题

446

帖子

0

粉丝