我的PSoC学习(二)(PSoC Creator 2.0+win7+CY8C38):一些PSoC学习手记
来源:互联网 发布:python 符号错误 编辑:程序博客网 时间:2024/06/05 19:03
1.通过第一个闪烁LED我们可以知道,LED可以用PWM直接制造闪烁,或者用main函数循环来制造闪烁,相比之下,前者更优。而闪烁的频率由PWM的时钟来决定,比如时钟是1kHz十分频即100Hz,然后PWM是计数满100循环一次的,也就是周期为1s,而可以设置占空比CMP value 1,此处的作用不明显,因为周期为1s,闪烁太慢,如果将频率提高,也就是循环一次的次数超过一定的量,则占空比就能改变亮度了。因此可以使用函数PWM_WriteCompare1()来实现。当周期改为4ms时,也就是时钟1kHz,因此当周期达到毫秒级别的时候PWM就开始起作用来调整亮度了。
2.做一个呼吸灯看看。注意PWM_WriteCompare1(cnt);必须和前面的器件的名字PWM一致!PWM_1_WriteCompare1(cnt);则对应PWM_1。呼吸灯在延迟15ms,周期为3.33ms,计数为100份的时候效果不错。
3.第二个例子让我们知道LCD强大的功能,用于查看运行时变量非常方便。同样电位器的使用以及ADC转化也包含在第二个例子里面。不过发现虽然是16位的函数ADC_DelSig_1_GetResult16(),然而每次返回的都是一个八位的结果,这开始以为是因为ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);//转换结果其实是8位的,那么如果要转化得到16位结果要如何操作呢?其实只要在图形界面里设置属性就行了,而ADC_DelSig_1_IsEndConversion返回的只是低八位而已,其他的数据它不返回。
4.第三个例子包含了DAC,UART,以及DMA,真是非常丰富。UART没什么内容,先看看DAC,由于DMA的使用根本看不清楚DAC,所以还是先独立DAC看看,通过DAC模拟电压量来控制LED亮度和PWM来控制LED亮度到底有什么区别呢?于是在第一个例子里面加入DAC模块,两个灯放一起比一比看看。事实证明DAC更漂亮,因为给出了范围0x3D 和0x9F,一个是刚好看不见(而不是不亮),一个是饱和,而且其实是因为正弦变化更好看。。。Orz,不过发现最大亮度0x9F并没有100%占空比的PWM亮,难道是因为电压的原因?FAQ里面说是跟随器的low power,但是我已经用了high power了(并不是strong power),结果就是这样。于是我尝试拨到5V(冒着烧板子危险。。。),结果发现PWM的灯更加亮了,而DAC的灯并没有变亮(或者只变亮了一点点?),于是我怀疑0x9F有问题。明明能转0xFF,为啥就弄0x9F啊,很有问题!果然不出我所料!0xFF的DAC亮度和100%的PWM亮度一模一样,不过后来的变化也不是非常明显了,不过由此可见上界绝对不止0x9F。接下来就是DMA了,DMA用起来很麻烦,就是为了直接从内存传到DAC不经过CPU,关键是这个函数CyDmaTdSetAddress将内存传到了DAC。值得一提的是最后那个Clock的使用,非常巧妙,首先正弦波一直在输出,但是由于DMA受Clock的控制,clock受电位器的控制,所以旋转电位器就能使得数据传送的速度改变了,也就使得正弦波的周期改变了,非常的厉害。
5.第四个例子太牛了没啥好说的,第五个例子使用了电容传感器,非常新鲜,偶然发现了元件的跨工程复制粘贴功能,果然图形界面很方便。然后灵敏度的问题FAQ里面说了把5变成3,的确是灵敏了一些,但是还有更好的配置吗?难道要一个一个去试?不过我就想不明白为啥demo里面不给出最灵敏的配置呢。。。
查了一些资料http://www.bubuko.com/infodetail-762337.html
capsense大致原理就是传感器获得外部电容值的大小然后减去内部基准得到一个差值,这个差值与设定的阈值比较,如果大于阈值就认为有手指按动,否则判断为没有按动,就这么简单。
内部基准起了个名字叫基线baseline。基线值的计算是在噪声阈值下计算的,举个例子,假如我设置的噪声阈值是10,而现在环境中有噪声,这些噪声造成了即使在没有点击按键的情况下传感器的读数也不是0,而是大于0小于10的值,假设是5,那么此时基线就会变成5,但是如果噪声阈值仍然是10,但是噪声较大,是20,那么此时基线值是不会改变的,依然是0,而此时就会判断为有按动按键。
迟滞其实就是当外部电容增大的时候减去基线的差值自然也是增大的,增大到设定的阈值的时候并不会立即认为有触摸,而是需要大于阈值加迟滞值。而当外部电容减小到阈值下的时候也不会立即认为没有触摸,而是需要小于阈值减去迟滞值,才会认为没有触摸。滞回比较器的原理啊。
- 我的PSoC学习(二)(PSoC Creator 2.0+win7+CY8C38):一些PSoC学习手记
- 我的PSoC学习(四)(PSoC Creator 2.0+win7+CY8C38):温控系统PSoC编程需要注意的点
- 我的PSoC学习(一)(PSoC Creator 2.0+win7+CY8C38):入门级别的五个工程
- 我的PSoC学习(三)(PSoC Creator 2.0+win7+CY8C38):Capsense滑条与温控系统PSoC编程需要注意的点
- PSoC
- PSoC中断
- Psoc Creator 入门——空工程的建立
- Psoc Creator 入门——接近感应组件的使用
- Psoc Creator 入门 —— GPIO输出
- Psoc Creator入门——EZI2C 通信
- 搭建psoc creator开发环境调试软件
- CX51 用户手册----PSOC伪指令
- PSoC程序调试-运算优先级
- 基于PSoC的飞艇智能无线温度采集系统设计
- 快速编程不是梦,初识Psoc
- PSoC程序调试——I2C
- CY8CKIT-040 PSoC@4000 PIONEER KIT 1
- 优化利用PSoC芯片片上资源的低功耗应用
- Linux系统下buffer内存与cache内存的区别
- Java程序员面试中的多线程问题
- 数据结构与算法-归并排序
- PyQt5学习随笔01--计算一个文件夹里我们码的代码行数&&PyQt的多线程通信
- Java- 内部类与匿名类
- 我的PSoC学习(二)(PSoC Creator 2.0+win7+CY8C38):一些PSoC学习手记
- 百度最新面试题集锦
- selenium(webdriver)学习笔记6--Alert/Confirm/Prompt的处理(Java版)
- Python写Excel文件
- POJ 2253 Frogger(最短路--floyd变形)
- Netty 源码分析之ByteToMessageDecoder
- ios学习之旅--oc对象的关系
- Round A APAC Test 2016 Problem C. gCampus 最短路
- hdu 4324 Triangle LOVE(拓扑排序)