查看: 4903|回复: 10

[原创] 以YL-KL26Z开发板制作会讲故事的书——4

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
    发表于 2015-11-23 21:03:59 | 显示全部楼层 |阅读模式
    播放模式及控制
        多语音段播放模式可分为逐段按序播放、自动顺序播放、选控播放、组合播放等。
    逐段按序播放:为控制语音段的播放节奏,以键控的方式按序播放语音段且可以实现循环播放,其特点是控制按键少,有利于页面与语音的对应。
    自动顺序播放:启动后无需人工干预即可按顺序播放各语音段的内容,由于缺少节奏控制,故难以统一页面与语音的对应关系。
    选控播放:选控播放与逐段按序播放都具有音乐播放的控制性,但它在语音段的控制上其操作性更灵活,而附带的条件则是要配置较多的按键,语音段越多,按键就越多,要建立一一对应的关系。它宜用在语音段比较少的情况,且以采用触摸键的方式为佳。
    组合播放:多用于参数播报方面,如当前温度是xx度等,其温度值是按测量值来组合数字语音段而拼接出的,需一定的程序段来辅助处理。
    语音文件制备及命名规则
    为了实现各种语音播放模式,需制备相应的语音段文件,并按照相应的功能来命名文件。在处理顺序播放的模式下,宜采用数字来命名,以便于建立顺序间的对应关系。而在组合播放模式下,则应以简短的字符来说明语音段的内容为佳,从而便于组合输出。
    TSI技术
    在YL-KL26Z开发板上,除了使用小按键来进行人机交互外,还有另一种操控方式就是触摸式操控。触摸式操控采用的是TSI技术。
    所谓“TSI”是Touch Sensing Input 的缩写,是触摸感应输入的意思,作为一种新型的人机交互手段,其不同于传统的机械式按键操作,而是通过感应板来感知外部的操作意向。主流的触摸感应技术主要有电阻式、电容式、红外线式和表面超声波式。
    YL-KL26Z开发板所采用的是电容式感应输入接口,它最多可提供16个TSI引脚,在开发板上实际所提供的为3个触摸键位。
    那电容式感应输入是如何工作的呢?它是将一块小的电极板与TSI引脚相连接,有时为了防止电流的伤害,也会在其间接入一个1K的限流电阻。而所谓电极就是一块表面覆有绝缘材料的导电板。在一般条件下,电极表面覆盖的绝缘材料如玻璃或绝缘涂层等,其厚度约为电极直径的10%,即直径1cm的电极其合适的感应距离为1mm。
    当人体接近或接触电极板时,会使电极板的电容值发生改变,TSI引脚的内部机制可以对极板的电容值进行检测,当检测值超过预设的限值时,就会置位TSI的触发标志位,并激活中断请求以进行事件响应处理。
    在TSI引脚内部有两个电流源对外部的极板进行冲放电,并在极板上产生三角波信号。极板上的三角波信号频率会随极板电容的变化而变化。当电容增大时,三角波的信号频率就会减小,周期就会变大。借助这一变化规律,就可判别是否出现触摸操作。
    在YL-KL26Z开发板上,使用触摸操作来控制语音段的播放,需要在键控程序的基础上在项目中添加TSI的驱动程序,添加后的界面如下图所示。
    为了减少编程的工作量,可在原触摸程序的基础上进行改造,对TSI_Slider_LED( )函数的主要修改为:
    1.清除触摸下的LED灯处理
    2.添加外部扩展的公共变量j,以传递触发键位值。



    修改后的TSI程序如下:
    TSIDrv.c
    #include "TSIDrv.h"
    #include "includes.h"
    INT8U total_electrode = TOTAL_ELECTRODE;
    INT8U elec_array[16]={ELECTRODE0,ELECTRODE1,ELECTRODE2,ELECTRODE3,ELECTRODE4,ELECTRODE5,                        ELECTRODE6,ELECTRODE7,ELECTRODE8,ELECTRODE9,ELECTRODE10,ELECTRODE11,
                                    ELECTRODE12,ELECTRODE13,ELECTRODE14,ELECTRODE15};
    INT16U gu16TSICount[16];
    INT16U gu16Baseline[16];
    INT16U gu16Threshold[16]={THRESHOLD0,THRESHOLD1,THRESHOLD2,THRESHOLD3,THRESHOLD4,THRESHOLD5,
                                    THRESHOLD6,THRESHOLD7,THRESHOLD8,THRESHOLD9,THRESHOLD10,THRESHOLD11,
                                    THRESHOLD12,THRESHOLD13,THRESHOLD14,THRESHOLD15};
    INT16U gu16Delta[16];
    INT16U ongoing_elec;
    INT8U end_flag = TRUE;
    INT8U j;
    INT8U SliderPercentegePosition[3] = {NO_TOUCH,NO_TOUCH,NO_TOUCH};
    INT8U SliderDistancePosition[3] = {NO_TOUCH,NO_TOUCH,NO_TOUCH};
    INT16U AbsolutePercentegePosition = NO_TOUCH;
    INT16U AbsoluteDistancePosition = NO_TOUCH;
    void TSI_Init (void)
    {
      SIM_SCGC5 |= SIM_SCGC5_TSI_MASK;  // Enable clock gating for TSI
      /* Enable proper GPIO as TSI channels */
      PORTB_PCR16 = PORT_PCR_MUX(0);   // PTB16 as TSI channel 9
      PORTB_PCR17 =  PORT_PCR_MUX(0);  // PTB17 as TSI channel 10
      PORTC_PCR0 =  PORT_PCR_MUX(0);   // PTB17 as TSI channel 13
      NVIC_DisableIRQ((IRQn_Type)TSI0_IRQn);
       
      TSI0_GENCS |= (TSI_GENCS_ESOR_MASK
                       | TSI_GENCS_MODE(0)
                       | TSI_GENCS_REFCHRG(4)
                       | TSI_GENCS_DVOLT(0)
                       | TSI_GENCS_EXTCHRG(7)  
                       | TSI_GENCS_PS(4)
                       | TSI_GENCS_NSCN(11)
                       | TSI_GENCS_TSIIEN_MASK
                       | TSI_GENCS_STPE_MASK
                       //| TSI_GENCS_STM_MASK     //Trigger for the module 0=Sofware
                       );
      
      TSI0_GENCS |= TSI_GENCS_TSIEN_MASK;
      
      TSI_SelfCalibration();
    }
    void change_electrode(void)
    {
        int16_t u16temp_delta;
       
        gu16TSICount[ongoing_elec] = (TSI0_DATA & TSI_DATA_TSICNT_MASK);          // Save Counts for current electrode
        u16temp_delta = gu16TSICount[ongoing_elec] - gu16Baseline[ongoing_elec];  // Obtains Counts Delta from callibration reference
        if( u16temp_delta < 0)
                gu16Delta[ongoing_elec] = 0;
        else
                gu16Delta[ongoing_elec] = u16temp_delta;
       
        if(total_electrode > 1)  //Change Electrode to Scan
        {
                if((total_electrode-1) > ongoing_elec) ongoing_elec++;
                else   ongoing_elec = 0;
                
                TSI0_DATA = ((elec_array[ongoing_elec]<<TSI_DATA_TSICH_SHIFT) );
                TSI0_DATA |= TSI_DATA_SWTS_MASK;
        }
    }
    void TSI_Slider_LED(void )
    {
         if(end_flag)
          {   
            end_flag = FALSE;
            if((gu16Delta[0] > gu16Threshold[0])||(gu16Delta[1] > gu16Threshold[1])||(gu16Delta[2] > gu16Threshold[2]))
             {
               if((gu16Delta[0] > gu16Threshold[0]))      j=1;
               if((gu16Delta[1] > gu16Threshold[1]))      j=2;
               if((gu16Delta[2] > gu16Threshold[2]))      j=3;
                  }
    else
             {  j=6;
                SliderPercentegePosition[0] = NO_TOUCH;  
                SliderPercentegePosition[1] = NO_TOUCH;
                SliderPercentegePosition[2] = NO_TOUCH;
                SliderDistancePosition[0] = NO_TOUCH;
                SliderDistancePosition[1] = NO_TOUCH;
                SliderDistancePosition[2] = NO_TOUCH;
                AbsolutePercentegePosition = NO_TOUCH;
                AbsoluteDistancePosition = NO_TOUCH;
             }
          }
    }     
    void TSI0_IRQHandler(void)
    {
      end_flag = TRUE;
      TSI0_GENCS |= TSI_GENCS_EOSF_MASK; // Clear End of Scan Flag
      change_electrode();
    }


    c.jpg

    评分

    参与人数 1NXP金币 +20 收起 理由
    小七 + 20 打赏!

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
    发表于 2015-11-24 09:20:18 | 显示全部楼层
    楼主写了一个系列
    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2015-11-24 10:28:07 | 显示全部楼层
    安臣 发表于 2015-11-24 09:20
    楼主写了一个系列

    不知大家是否有用,尽量能把开发板的一些功能用好,并掌握其用法。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    65

    帖子

    0

    注册会员

    Rank: 2

    积分
    153
    最后登录
    1970-1-1
    发表于 2015-11-24 13:48:28 | 显示全部楼层
    很好玩的一样
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13135
    最后登录
    2019-1-27
    发表于 2015-11-24 16:23:25 | 显示全部楼层
    楼主下次可以尝试使用编辑器中如下截图功能帖代码哦
    QQ图片20151124162046.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
    发表于 2015-11-25 08:54:43 | 显示全部楼层
    jinglixixi 发表于 2015-11-24 10:28
    不知大家是否有用,尽量能把开发板的一些功能用好,并掌握其用法。

    可以,多些一些。做出来必定有用
    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2015-11-25 09:21:32 | 显示全部楼层
    小七 发表于 2015-11-24 16:23
    楼主下次可以尝试使用编辑器中如下截图功能帖代码哦

    正在学习,已经落伍了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2015-11-25 10:31:32 | 显示全部楼层
    小七 发表于 2015-11-24 16:23
    楼主下次可以尝试使用编辑器中如下截图功能帖代码哦

    在发第5个帖子时试了一下,不兴发了2次,那个有2个图片的帖子能帮着删去吗,我没法把它删去。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    569

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2117
    最后登录
    2018-2-1
    发表于 2015-11-25 11:27:02 | 显示全部楼层
    慢慢来熟悉用法 咯, 我自己也是刚刚在摸索。 FreeLogo.png 加油。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-25 13:20:36 | 显示全部楼层
    相信楼主一定能够成功
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-25 21:06 , Processed in 0.114392 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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