9回答

1收藏

PSoC? 3 FirstTouch? Starter Kit 例子源代码分析之Bubble Level Emulator

英飞凌 英飞凌 3710 人阅读 | 9 人回复 | 2012-09-24

本帖最后由 wangku001wei 于 2012-9-24 09:33 编辑

先找了个相对比较简单的代码进行分析
首先看原理图

dPort_AcclControl 控制加速度传感器的 ST/MODE  MODE  ACC_ENABLE  (注意先后顺序) 引脚
PdPort_LSB 对应P2口的P2[3:0]控制
dPort_MSB 对应P4口的P4[3:0]控制
注意 PdPort_LSB 的最高位和 dPort_MSB的最低位都是由同一个控制寄存器 LED_Control_Reg 3 LED_Control_Reg[3] 经反向后输出 是为了实现在水平位置时候将最中间的两个LED灯同时点亮
之所以反向是因为电路设计为低电平点亮LED,高电平熄灭LED


代码分析
void main()
{
    int16 BubbleValue=0;

    /* 使能全局中断 */
    CYGlobalIntEnable;

    /* 关闭所有的LED灯 on PORT2(pin 0-3) and PORT4 pin(0-3) */
    LED_Control_Reg_Write(0);

    /* 设置加速度传感器的控制引脚 注1*/
    dPort_AcclControl_Write(ACCL_SET_CONTROL);

    /* 开始AD转换 */
    ADC_Start();
    ADC_StartConvert();

    while(1)
    {
        /* 等待AD转换完成 */
        ADC_IsEndConversion(ADC_WAIT_FOR_RESULT);

        /* 读取AD转换的结果*/
        BubbleValue = ADC_GetResult16();
        /* 对转换结果值进行处理 注2*/
        BubbleValue = ((BubbleValue - G_MEAN_VALUE)>>GAIN);

       /* 将处理结果值加3以便将LED的显示偏移到中间 */
        BubbleValue+=3;

        /* 对测量的加速度结果超过限制阈值的处理 */
        if(BubbleValue < 0)
        {
            BubbleValue = 0;
        }
        if(BubbleValue > 6)
        {
           BubbleValue = 6;
        }

        /* 控制LED灯 */
        /* 第3位控制了引脚3 4 以便实现当板子水平是很中间的两个LED点亮 */
        LED_Control_Reg_Write(1<<BubbleValue);
    }
}

1  Bubble.h 文件中宏定义了
#define ACCL_SET_CONTROL    ((uint8) 0x06)
对应加速度传感器的引脚
ENABLE=1, MODE=1, ST/MODE=LOW
(可查找传感器的使用说明)
2  减去 3300 的意思在 Bubble.h 文件中有提到
加速度传感器水平位置时候测量到的电压约为1.65V,对应12ADC转换结果的数字为3300,因此减去3300得到实际的倾斜程度
除以 GAIN(7)是由于采用7位的寄存器控制了8个LED灯,为了将不同程度的倾斜分成7段

关于ADC转换组件的使用 可参考帮助文档
在配置对话框框中
单击Data Sheet即可出现一个PDF
分享到:
回复

使用道具 举报

回答|共 9 个

倒序浏览

沙发

baobeix

发表于 2012-9-24 09:35:49 | 只看该作者

抢个沙发顶一个~~~楼主很给力!
板凳

小菜儿

发表于 2012-9-24 09:39:13 | 只看该作者

期待楼主的连载~~~
地板

w932443004

发表于 2012-9-24 09:45:00 | 只看该作者

xinxincaijq 发表于 2012-9-24 09:39
期待楼主的连载~~~

争取两天一个吧
5#

小菜儿

发表于 2012-9-24 09:50:39 | 只看该作者

wangku001wei 发表于 2012-9-24 09:45
争取两天一个吧

相当给力!!!到时候把楼主的教程整理一下,给学习者作参考~
6#

jlj8315292

发表于 2012-9-24 10:13:24 | 只看该作者

很不错啊...哈哈哈顶一个
7#

醉清风-385874

发表于 2012-9-24 21:52:58 | 只看该作者

LZ 以前学过么??
做对的事情比做对事情更重要!
8#

w932443004

发表于 2012-9-24 21:55:10 | 只看该作者

醉清风 发表于 2012-9-24 21:52
LZ 以前学过么??

木有啊,第一次接触  只好先拿帮助文档 Tutorial Guide 之类的先上手 总觉得少了点什么  
9#

醉清风-385874

发表于 2012-9-24 22:24:55 | 只看该作者

wangku001wei 发表于 2012-9-24 21:55
木有啊,第一次接触  只好先拿帮助文档 Tutorial Guide 之类的先上手 总觉得少了点什么   ...

哦…………
做对的事情比做对事情更重要!
10#

ming1006

发表于 2012-9-24 23:59:26 | 只看该作者

还是要赞一记
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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