• 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20
  • 打印

    广东十一选五中奖技巧: GD32F303的GPIO口配置为AF输入会导致电平改变,最终无法触发

    [复制链接]
    488|14
    跳转到指定楼层
    楼主
    本帖最后由 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的工程师能看到,或碰过这个问题的水友能提提建议
    测试代码:



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    沙发
    | 2018-11-8 14:19 | 只看该作者
    AF模式是什么模式呀

    评论

    liangzheng63 2018-11-8 14:49 回复TA
    Alternate Function,就是将IO口配置到外设上去了 
    板凳
    | 2018-11-8 14:28 | 只看该作者
    本帖最后由 GONGO 于 2018-11-8 15:05 编辑

    修改一下,看一下 user manual 中的寄存器配置,
    CTL0[1:0] = 改成 In input mode(Floating input / Input with pull-up / pull-down) 选一种,

    MD0[1:0] = 必须是 00 ,代表输入,其他都是输出模式




    你把模式配成了输出模式当然不行了!


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    地板
     楼主 | 2018-11-8 14:48 | 只看该作者
    GONGO 发表于 2018-11-8 14:28
    修改一下,把模式改成 In input mode(Floating input / Input with pull-up / pull-down)看一下 user man ...

    不是的,我配置的就是AFIO output,指的输入是指配置成该模式后与外设相连,外设将该引脚视为输入引脚,就像帖子里最后一个图的Alternate Function Input一样
    5
     楼主 | 2018-11-8 15:41 | 只看该作者
    本帖最后由 liangzheng63 于 2018-11-8 17:13 编辑
    GONGO 发表于 2018-11-8 14:28
    修改一下,看一下 user manual 中的寄存器配置,
    CTL0[1:0] = 改成 In input mode(Floating input / Inpu ...

    问题解决了,谢谢 GONGO和王工!

    看 GONGO 的画重点才发现了这个异处,GD32F303里是叫AFIO output 的,这个规则与GD32F103、STM32F103是相同的,即只有确定外设使用该IO口输出,才将其配置为Alternate function output mode,如果外设为输入时,则需配置为Input mode。

    而STM32F303是这样描述的:

    叫做Alternate function mode,只要是和外设要使用的IO口,配置为该Alternate function mode将IO交给外设管理,应该是当外设使用该IO口作为输入时,会在外设内部切断输出线路。

    出现帖子里的原因就是我将STM32F303其配置成了Alternate function mode,将代码转到GD32F303上时,该寄存器位又对应了Alternate function output mode,导致输入信号与外设的输出线共线,才出现了上面这些滑稽的测试。

    STM32F303寄存器异变的太多了,我没愣神,真是一字之差啊,还以为GD32F303可以像STM32F103向GD32F103替换一样,浪费了一天多时间找问题,算是给后来的人提个醒吧。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    6
    | 2018-11-8 16:24 | 只看该作者
    感觉是不是寄存器的配置有问题呀
    7
    | 2018-11-8 16:26 | 只看该作者
    有没有可能跟外部硬件连接也有关系啊

    评论

    liangzheng63 2018-11-8 17:14 回复TA
    没有,这就是最小电路测出来的,确实是配置的问题,STM32F303与GD32F303寄存器差别太大 
    8
     楼主 | 2018-11-8 17:18 | 只看该作者
    xiaoqizi 发表于 2018-11-8 16:24
    感觉是不是寄存器的配置有问题呀

    恩,就是寄存器的问题,STM32的寄存器规则变得多,有些特别小的点就很难注意到差别,且GD32F303与STM32F303差别还是挺大的
    9
    | 2018-11-10 18:16 | 只看该作者
    这个用示波器的来监控的就很一目了然了的
    10
    | 2018-11-25 10:44 | 只看该作者
    配置不同的GPIO口速度会导致TIMERx_ETI线上的电平发生不同变化,最后甚至无法正常触发TIMERx的事件。
    11
    | 2018-11-30 21:56 | 只看该作者
    那个10M的时候,向下的那个尖尖的波形是什么原因呢?
    12
    | 2018-11-30 21:56 | 只看该作者
    labasi 发表于 2018-11-8 14:19
    AF模式是什么模式呀

    配置为特殊功能IO。
    13
    | 2018-11-30 21:57 | 只看该作者
    vibra2016 发表于 2018-11-25 10:44
    配置不同的GPIO口速度会导致TIMERx_ETI线上的电平发生不同变化,最后甚至无法正常触发TIMERx的事件。 ...

    那是肯定的,我们实际运行的时候是不变的,固定为一个速度的。
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20