查看: 6661|回复: 17

Psoc3开发日记---SIO的电压比较器功能及接口组件的 BUG

[复制链接]
  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

    发表于 2013-9-8 22:46:20 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 mengyun2801 于 2013-9-8 22:57 编辑

      最近一直在做Psoc3的开发,项目不大,但是基本上把所有功能都用到了,正所谓麻雀虽小五脏俱全呀!通过这个小项目,已经有很多经验可以跟大家分享了,接下来我尽量会每周一帖,把我遇到的问题和大家分享,只是需要腾出时间去整理一下,如果大家觉得有必要,我争取每周更新一帖,看下大家的反馈了。言归正传,下面介绍SIO的电压比较器功能的设置方法和实现方式:
      在这个小项目中,为了能够对资源的充分利用,我将SIO的电压比较器功能加了进去,利用它来做一个动态的电压比较器。
      对于SIO引脚的功能,我发现很少有人去用,也没有什么可以参考的,只能自己捉摸着去实验,在实验过程中也发现了一个软件BUG,通过与艾睿的FAE沟通,也没有能够解决,但是知道问题所在就可以避免,只能坐等原厂更新此BUG。下面将对SIO模块的电压比较器功能的使用方法进行说明一下:
      在这里提醒大家一下的是,SIO的使用主要有两点需要注意:一是,只能连接数字信号。二是,在使用SIO的电压比较器功能时,每对SIO共用一个电压基准源。
      下面我们就进入正题,先将实现此功能的基本原理图展示给大家,如下图所示,要想实现此功能,必不可少的就是电压基准源,我采用内部的VDAC组件来提供,这样就可以通过程序时时调整基准源电压:

    原理图.JPG

    下面,我们按步骤进行设计,首先从右侧的库中拉入一个Digital Bidirectional Pin组件,然后双击PIN模组。配置如下图:
    AIN_B设置1.JPG
      注意,此功能随时模拟比较器,但千万注意引脚类型要选择“Digital Input”。

    AIN_B设置2.JPG
      在“General”的选项卡中,选择“High Impedance Digital”;

    AIN_B设置3.JPG
      关键就在此处,在“Threshold”(阈值)一项中,我们可以选择不同的阈值电压,而如果采用VDAC作为电压阈值的控制输出,就要选择“Vref”,此模组就会出现一个“Vref”的输入引脚,我们就可以把VDAC与此脚相连接。

    AIN_B设置4.JPG
      为了能够时时监控此引脚的电压翻转,我们需要设置一个中断,如上图所示,我们可以选择不同的终端类型。在本实验中,我选择了“Falling Edge”模式。

      到此我们已经设置后一个具有中断,并且可调节的电压的SIO比较器。接下来我们拉入一个VDAC组件(命名为“VDAC_SIOREF”),将其输出与此比较器的Vref相连,因为VDAC的设置比较容易,在这里就不多提及了;然后,再拉入一个Interrupt组件(命名为“DET”),这里要注意的是此组件的设置,其终端类型一项,可以默认或是选择“LEVEL”,如下图所示:

    isr.JPG
      为了能够将变化状态直观的看到,我们可以加一个输出引脚接到开发板的LED上,我们不对此接口的配置进行详细说明了。到此为止,我们已经将SIO的电压比较器功能电路搭建完毕,下面就是代码的编写了。下面介绍一下,这里需要注意的问题。

      主程序中只需要对中断和VDAC进行声明,可以随便为VDAC设置一个输出值,然后开启中断即可。

    #include <device.h>


    void main()
    {   
            VDAC_SIOREF_Start();
            DET_Start();
            
            VDAC_SIOREF_SetValue(170);
            CyGlobalIntEnable; /* Enable all interrupts by the processor. */
      while(1)
      {
              ;
            }
    }

      下面介绍“DET”中断程序中需要注意的,在此程序中掉入了“AIN_B”和“LED”的库文件,如下图所示。当中断触发时,我们先是执行停止中断命令,再清除中断标志位,让LED闪烁,此处最好加一个延时,为了初步验证,就没有加入。提醒大家千万注意的是,千万不要忘记清楚中断标志位,不然程序将会死在此中断中。之前看过有些中断按键的程序中少了这一句,按键就只能检测一次,然后就没有反应了。
    det 声明.JPG
    det 中断函数.JPG
      到此为止,我还未提到BUG的问题,因为只有在你编译后才能发现,如果你的SIO引脚可能不会生成库函数,但是编译过程中没有错误,这究竟为什么?这也是我在清中断标志时发现的,我想找下此引脚的清中断标志位命令,这时才发现根本没有找到此引脚生成的库函数。下面请看下我的截图就知道原因了,请大家对比一下就明白了。
    引脚.JPG
      开始的时候我选用的是右侧的组件,不能生成库函数,但是我看了一下其他的例程,粘贴过来一个引脚(左侧),同样设置,就能生成库函数,对比之下才发现,这两个引脚只有版本号不同,也就是说最新版本1.9中有BUG存在,导致不能生成库函数,具体原因原厂还没有回复我,估计是要等组件更新了。如果大家需要此功能,可以从例程中找一个低版本的引脚,目前来说,我用的是1.7版本的,这个没问题。这种遭雷劈的概率被我赶上了,看来急于升级并非好事,而是抓住了做小白鼠的机会~~~
      如果你要使用此功能,你可以看下你的组件是不是最新的?作为其他功能使用都可以正常生成库函数。反正我的已经是1.9了,不管你信不行~~~
    组件.JPG
      由于篇幅和时间原因,此篇文档比较简单,随后我会把动态调整阈值电压的程序加上来,还有利用内部电压比较器实现动态电压调整程序也贴出来,两种方案让大家交流~~~
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-8 23:10:05 来自手机 | 显示全部楼层
    沙发自己坐吧~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-12 10:32
  • 签到天数: 295 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-9 08:09:56 | 显示全部楼层
    给力贴,顶一下,期待后续的更新~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-9 08:22:04 | 显示全部楼层
    这个必须可以。日记日记,天天得有哟!{:soso_e112:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-9 08:25:46 | 显示全部楼层
    给你加颜色又加精喽哟!满意不。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-9-9 09:17:55 | 显示全部楼层
    期待期待连载,正玩psoc3呢。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-9 09:28:42 | 显示全部楼层
    QQ哥 发表于 2013-9-9 09:17
    期待期待连载,正玩psoc3呢。。。

    可以呀,有问题一起探讨~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-9 09:29:14 | 显示全部楼层
    fj1161 发表于 2013-9-9 08:09
    给力贴,顶一下,期待后续的更新~~~~~~~~~

    谢谢啊~~~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-9 09:30:01 | 显示全部楼层
    GY@艳 发表于 2013-9-9 08:22
    这个必须可以。日记日记,天天得有哟!

    日记是天天有,时间有限,慢慢整理,把精华的和大家一起分享~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-6-1 08:44
  • 签到天数: 398 天

    连续签到: 2 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-9 09:30:42 | 显示全部楼层
    本帖最后由 mengyun2801 于 2013-9-9 09:36 编辑
    GY@艳 发表于 2013-9-9 08:25
    给你加颜色又加精喽哟!满意不。

    谢谢了,你们给力,我就更给力~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-24 02:40 , Processed in 0.212035 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.