关于STM32G030的内部HSI,能支持USART,115200bps吗?
STM32G030是不支持外部无源晶振的,因为要用到RS485总线,之前用的内部HSI,上115200bps,有时会通讯失败。产品也会在低温情况下使用,担心HSI的精度不够,想换成STM32G070了。
想问一下大家有什么建议。。。
没听说哪个mcu不支持无源晶振 可以支持,我们用来串口收发数115200没听同事说有出错的情况。 本帖最后由 Himem 于 2022-12-30 22:45 编辑
G030支持无源晶振呀,什么封装?
而且也能用lse校准hsi stm32g030用HSIusart接linux系统跑1mbps 产品暂时没发现有什么问题 ST的HSI不错了。而且我记得还支持修正 已决定用STM32G030+有源晶振
smallwood 发表于 2022-12-30 21:35
stm32g030用HSIusart接linux系统跑1mbps 产品暂时没发现有什么问题
(引用自5楼)
不代表大批量的一致性,还有不同工作环境。
dog 发表于 2022-12-31 09:29
不代表大批量的一致性,还有不同工作环境。
(引用自8楼)
stm32g0 内置时钟精度能确保在 1% 误差以内,芯片支持的温度范围内都可以保证,理论上用于串口通讯没有问题,你应该查查可能是其它问题 dukelec 发表于 2022-12-31 09:54
stm32g0 内置时钟精度能确保在 1% 误差以内,芯片支持的温度范围内都可以保证,理论上用于串口通讯没有问 ...
(引用自9楼)
嗯,看你这么有信心,刚才用核心板测试了,发出115200bps的0x55,用电吹风60度吹的情况下,Bit的宽度确实没有任何变化。
应该115200一点问题也没有,甚至上M都没问题。
有时通讯失败
啥条件下触发,实验室可以重现故障吗?
通讯错误,硬件或者软件设置错误也会出现偶发现故障。 usart2可能存在这个毛病. 最高只能57600. usart1能跑到 115200 甚至更高.
我没仔细看手册, 也没没仔细研究 ,反正凑活用 .
另: 希望你测试后 回复一下 ,我也好知道是不是我程序的问题. street 发表于 2023-1-1 17:49
usart2可能存在这个毛病. 最高只能57600. usart1能跑到 115200 甚至更高.
我没仔细看手册, 也没 ...
(引用自12楼)
谁说的啊?
不可能的,我经常跑115200x4, dog 发表于 2023-1-2 09:04
谁说的啊?
不可能的,我经常跑115200x4,
(引用自13楼)
我usart2跑 freemodbus 只能到 57600. 115200 就容易卡顿. 但是 我 usart1 自由协议, 速度远超115200 没问题. street 发表于 2023-1-2 09:45
我usart2跑 freemodbus 只能到 57600. 115200 就容易卡顿. 但是 我 usart1 自由协议, 速度远超1152 ...
(引用自14楼)
我也是用485,有时会失败,我昨天仔细测试过USART本身,应该不会有问题,
你有没有分析过什么原因?收发器的原因吗? dog 发表于 2023-1-2 09:54
我也是用485,有时会失败,我昨天仔细测试过USART本身,应该不会有问题,
你有没有分析过什么原因?收发 ...
(引用自15楼)
其他单片机115200 是没有问题的. G030的 usart2 就不行. street 发表于 2023-1-2 12:00
其他单片机115200 是没有问题的. G030的 usart2 就不行.
(引用自16楼)
你 485收发器用的什么型号?
dog 发表于 2023-1-2 21:11
你 485收发器用的什么型号?
(引用自17楼)
SP3485. 吧就是 smt 默认的型号.
下午测试 了 f103的开到 256000 都没有问题.
有时间 再试试 g030 的usart1看看 能跑多高的速度.
我感觉 是 usart2可能某个配置配有配好.或是他的中断 有点问题. street 发表于 2023-1-2 21:22
SP3485. 吧就是 smt 默认的型号.
下午测试 了 f103的开到 256000 都没有问题.
(引用自18楼)
你不用DMA的吗?
发送完后,中断,切换485方向 ? 我用的自动切换方向的,用DMA,没有中断。
但也是有少量失败,我当时以为是HSI的问题 dog 发表于 2023-1-2 21:29
我用的自动切换方向的,用DMA,没有中断。
但也是有少量失败,我当时以为是HSI的问题 ...
(引用自20楼)
没用DMA 没研究过. usart2应该是没有自动切换方向的功能. 不要太早关485发送使能,适当加点延时应该就能解决,库函数有时候拿寄存器状态判断,并不适用于你发送器速度慢或者有低速光耦磁藕等情况,这个情况并不好抓取。 陆小凤之北京 发表于 2023-1-4 17:06
不要太早关485发送使能,适当加点延时应该就能解决,库函数有时候拿寄存器状态判断,并不适用于你发送器速 ...
(引用自22楼)
你是用DMA 完成中断后,再开USART_RXE中断?再通过GPIO切换485方向? dog 发表于 2023-1-4 18:03
你是用DMA 完成中断后,再开USART_RXE中断?再通过GPIO切换485方向?
(引用自23楼)
只有接收用中断,发送是任务调度的。通讯失败的具体原因是什么呢?CRC错误?接收长度不对?还是什么啊? dog 发表于 2023-1-4 18:03
你是用DMA 完成中断后,再开USART_RXE中断?再通过GPIO切换485方向?
(引用自23楼)
DMA传输完成了并不代表数据实际传输完成了, 只是把数据传输到寄存器了 st 的 g030,g070,国民科技的g455,l403,华大半导体的f460,
115200的波特率都没什么问题,当然我没有用到所有的usart口,
我感觉他们不应该有啥区别吧。
我用的是dma+空闲中断的方式接收数据,发送也是dma
页:
[1]