Image
Image

结合国际经验

+ 关注

粉丝 1     |     主题 64     |     回帖 773

记录一次对STM32G4串口硬件FIFO的调试
2024-4-15 09:04
  • ST MCU
  • 33
  • 2330
  先判断RTO且RTOR寄存器的RTO是0的例子:  
  问题2: 如果一次性接收到的数据刚好是4的倍数,那么最后一轮数据发完触发的是RTO中断还是RXFT中断还是都有 ...  
  结果导致一次性接收不超过9字节能正常接收,超过9字节只能接收前9字节: ...  
  结果导致一次性接收不超过9字节能正常接收,超过9字节只能接收前9字节: ...  
  问题1: 之前的代码没有手动清除RTOF标志位,导致HAL库自带的HAL_UART_IRQHandler(&huart1); 函数将 RXFT ...  
  到了这里,基本的功能就已经实现了,如果不想继续深究,看到这边就可以了,后面我会分享自己的debug经历以 ...  
  修改中断函数:  
  然后我们修改初始化代码:  
  3、如何正确的使用FIFO进行数据接收 不知道大家是否还记得空闲中断,对,就是用于DMA接收不定长数据用到的 ...  
  在现有基础上,我们再次发送"abcdefg\r\n",观看逻辑分析仪抓到的波形: 我们发现当接收完"a"的时候进入了 ...  
  神奇的事情发送了,串口居然只返回了"1234",丢了3字节,而且我们发现仅在接收到第4个字节的时候进入了一次 ...  
  然后使用串口助手同样发送"12345\r\n",观看逻辑分析仪抓到的波形:  
  并且在主循环里加上这一段:(仅用来验证FIFO功能,切勿用于其他用途) ...  
  修改中断函数:  
  2、FIFO的运行机制探究 下面,我们把RXNE中断改为RXFT中断: // __HAL_UART_ENABLE_IT(&huart1, UART_IT_RX ...  
  通道0连接的是PA0,通道4连接的是RX,通道3连接的是TX。发现串口每接收到一个数据就进入一次中断,并且把接 ...  
  再用串口助手发送"12345\r\n",观看逻辑分析仪抓到的波形:  
  然后编写中断函数:  
  二、硬件FIFO的使用 1、配置正常的中断接收 我们在初始化过程中加上这一句: __HAL_UART_ENABLE_IT(&huart ...  
  阈值是干什么的,一般配成多少。这里的阈值意味着当我的接收FIFO收到n个数据了就可以产生一次中断。比如我 ...  
2
3
近期访客