本帖最后由 liangzheng63 于 2018-11-8 15:43 编辑
我在使用TIMER和SPI的时候,需要将IO口配置为AF模式,即该IO口连向了TIMER外设或SPI外设。
- 当使用TIMER的输入引脚TIMERx_ETI(TIMER的外部触发引脚)输入电平时,配置不同的GPIO口速度会导致TIMERx_ETI线上的电平发生不同变化,最后甚至无法正常触发TIMERx的事件。
- 当我把SPI的配置为从模式,即SCK也为输入时,将SCK与TIMERxETI相连(即外部的信号来同时控制SCK与TIMERxETI),会导致线上的电平更低,最终无法使用。
- 甚至在只配置IO口的情况下(即不初始化SPI和TIMER),该情况也是一模一样的
如图所示:原始信号(高电平为3.32V):
一、当GPIO口配置为50MHz时
- 外部信号只连接SCK或TIMERxETI(高电平为1.17V):
- 外部信号同时连接SCK和TIMERxETI(高电平为0.54V):
二、当GPIO口配置为10MHz时
- 外部信号只连接SCK或TIMERxETI(高电平为2.35V):
- 外部信号同时连接SCK和TIMERxETI(高电平为0.98V):
三、当GPIO口配置为2MHz时
- 外部信号只连接SCK或TIMERxETI(高电平为3.13V):
- 外部信号同时连接SCK和TIMERxETI(高电平为2.92V):
测试芯片使用的是GD32F303CC,我感到很是奇怪,为什么AF电路会钳低输入电平呢,这将会导致在外部信号根本不能触发AF电路的电平改变,而在使用STM32F303的时候不会发生这种事情,这问题也真是比较刁难,找了好久才找到原来和AF电路配置的速率相关。
可从测试结果看出来,要想完成外部信号同时控制从机SCK,TIMERxETI的话,在10MHz下是无法完成的,只能在2MHz下来完成。那么,毕竟从机SCK、TIMERxETI都是AF输入接口,是否配置的频率会影响施密特触发的结果?
问题:- 修改AF速率,会拉低电平的原因是?
- 10MHz的外部输入接于2MHz的AF输入配置下是否有风险?
- 有更好的解决方案让电平不被接低,从而正常工作触发的吗?
希望GD的工程师能看到,或碰过这个问题的水友能提提建议
测试代码:
main.zip
(767 Bytes)
|