查看: 15974|回复: 23

[分享] 【经验分享】 KBI 键盘中断边沿触发模式注意

[复制链接]
  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5970
    最后登录
    2020-9-28
    发表于 2014-6-30 19:04:07 | 显示全部楼层 |阅读模式
        飞思卡尔Kinetis KE0x、KEA 系列MCU片上集成有KBI ( Keyboard Interrupts )键盘中断模块。大家在使用KBI键盘中断的边沿触发模式时需要注意:在新的边沿触发中断前,所有该模块已使能的KBI引脚电平必须全都为触发前的电平状态。(比如KBI下降沿中断触发模式下,只要有一路引脚电平为低,则该模块已使能的其他KBI引脚发生下降沿将无法触发中断)这一点较Kinetis K、L系列MCU的IO中断有很大的区别,所以在使用时需要注意。

    问题起因:
        某位网友在学习AN4776, BLDC Motor Control with Hall Sensors Based on FRDM-KE02Z 这篇使用FRDM-KE02Z开发板实现无刷电机带霍尔检测的应用方案之后,把三路霍尔电平的检测由查询IO口电平方式改为KBI边沿中断方式,经常发生KBI边沿中断没能准确触发。最终才发现是由于前文提到的KBI ( Keyboard Interrupts )键盘中断模块特点导致的。
        这一点从参考手册MKE02Z64M20SF0RM的“33.5.1 Edge-only sensitivity”章节也有提到(如图1),只是大家在使用了Kinetis K、L系列IO中断之后,没有注意KE0x、KEA系列的KBI模块特点就把该模块当普通中端口使用导致的。
    KBI deasserted.jpg  
    图1
     

    KBI模块简介:
        大家可以通过参考手册的”Figure 33-1. KBI block diagram”模块框图(如图2)了解KBI ( Keyboard Interrupts )键盘中断模块结构以及各寄存器位作用。
    KBI block diagram.jpg  
    图2
     

        KBI ( Keyboard Interrupts )键盘中断在应用时还会遇到开漏输出的信号(比如之前提到的霍尔传感器就有开漏输出,这就需要用户接上拉电阻后才能输出高电平)。对于这类需求,KBI模块的“33.5.3 KBI Pullup Resistor”章节(如图3)有提到可以配置内部上拉电阻。
    KBI Pullup Resistor.jpg  
    图3


    测试程序:
        飞思卡尔官网提供FRDM-KExx 驱动库:KEXX_DRIVERS_V1.2.1_DEVD,其KBI模块程序位于类似路径E:\KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\build\iar\ke02\KBI_demo
        原程序使能了两个KBI模块的引脚中断,但由于之前提到的KBI中断边沿触发模式引脚相互影响仅限于同一个KBI模块,所以注释掉KBI1模块的初始化及回调函数设置;
        添加两句对于KBI0_P4引脚的配置,使之与KBI0_P0引脚同样下降沿触发、使能中断:
    sKBIConfig.sPin[4].bEdge = KBI_FALLING_EDGE_LOW_LEVEL;      //Pin2 J1 FRDM-KE02Z
    sKBIConfig.sPin[4].bEn   = 1;
        为了在IAR编译环境调试时方便观察正确的KBI配置,把主函数开头定义的sKBIConfig初始值全部清零。KBI_ConfigType  sKBIConfig={0};     //clear sKBIConfig

    测试方法:
        为了测试我们需要先查看FRDM-KE02Z开发板原理图FRDM-KE02Z_SCH,从原理图可知程序使能的KBI0_P0、KBI0_P4引脚分别引到了J2的Pin2、J1的Pin2位置。
        首先测试两KBI引脚的中断功能正常:通过引线将KBI0_P0或KBI0_P4与J9 Pin12\14 的GND导通,将能够分别触发KBI0中断并回调KBI0_Task函数。(引脚悬空时为高电平,与GND导通产生下降沿信号触发KBI中断)
        然后测试相互影响:把KBI0_P0接地看到串口已经输出信息后,再用KBI0_P4接地,此时后者产生的下降沿将无法触发KBI中断。
     
     
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5970
    最后登录
    2020-9-28
     楼主| 发表于 2014-6-30 19:06:36 | 显示全部楼层

    回复:【经验分享】 KBI 键盘中断边沿触发模式注意

    FRDM-KE02Z KBI Edge-only sensitivity.jpg
     
    附件是:
    测试程序FRDM-KE02Z KBI Edge-only sensitivity.zip
    文档形式的< KBI键盘中断边沿触发模式注意.pdf>

    FRDM-KE02Z KBI Edge-only sensitivity.zip (3.2 MB, 下载次数: 257)
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5970
    最后登录
    2020-9-28
     楼主| 发表于 2014-7-1 08:47:19 | 显示全部楼层

    RE:【经验分享】 KBI 键盘中断边沿触发模式注意

    希望对大家有所帮助,不足之处欢迎指正,同时也欢迎大家分享自己的小经验。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2014-7-1 09:22:53 | 显示全部楼层

    RE:【经验分享】 KBI 键盘中断边沿触发模式注意

    KBI是从飞思卡尔原先的MCU继承过来的模块,与Cotex M核结合,会有什么意想不到的效果呢,大家还是自己看看吧!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    11126
    最后登录
    2019-1-27
    发表于 2014-7-1 14:55:28 | 显示全部楼层

    RE:【经验分享】 KBI 键盘中断边沿触发模式注意

    看一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    131

    主题

    835

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    10021
    最后登录
    1970-1-1
    发表于 2014-7-1 15:08:02 | 显示全部楼层

    RE:【经验分享】 KBI 键盘中断边沿触发模式注意

    我觉得飞思卡尔的FAE能够针对工程师工作中所遇到的问题给出如此详细的经验分享,非常值得借鉴。希望后面坛子里针对大家的各种技术问题,都可以甄选出一些有针对性的问题,请FAE做更专业的指导。谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    273

    帖子

    0

    高级会员

    Rank: 4

    积分
    718
    最后登录
    1970-1-1
    发表于 2014-7-8 17:51:59 | 显示全部楼层

    RE:【经验分享】 KBI 键盘中断边沿触发模式注意

    谢谢斑竹分享,学习一下!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2014-7-9 09:59:13 | 显示全部楼层

    回复:【经验分享】 KBI 键盘中断边沿触发模式注意

    谢谢斑竹分享,学习一下!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2014-7-10 17:45:23 | 显示全部楼层

    回复:【经验分享】 KBI 键盘中断边沿触发模式注意

    你好 请问版主是不是就在例程中的main.c改了这几项
    1.KBI_ConfigType  sKBIConfig={0};清零
    2.sKBIConfig.sPin[4].bEdge = KBI_FALLING_EDGE_LOW_LEVEL; //Pin2 J1 FRDM-KE02Z
    sKBIConfig.sPin[4].bEn = 1;    使能KBI0的通道4
    3.杠掉了KBI1的初始化以及回调
    是不是只改了这几项,我在附件的程序中测试时没有问题的,但是在原版的例程中添加上面这些改动就没有任何效果,请问是怎么回事
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    5970
    最后登录
    2020-9-28
     楼主| 发表于 2014-7-11 09:23:28 | 显示全部楼层

    回复:【经验分享】 KBI 键盘中断边沿触发模式注意

    回复第 6 楼 于2014-07-01 15:08:02发表:
    我觉得飞思卡尔的FAE能够针对工程师工作中所遇到的问题给出如此详细的经验分享,非常值得借鉴。希望后面坛子里针对大家的各种技术问题,都可以甄选出一些有针对性的问题,请FAE做更专业的指导。谢谢! 

    谢谢各位的支持!
    这类经验分享我们通常会放到飞思卡尔社区论坛置顶的飞思卡尔Kinetis资料大本营帖子中“6:飞思卡尔小组【经验分享帖】汇总呈现”里。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-2 15:09 , Processed in 0.153414 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表