打印

关于CSD与CSDADC模块

[复制链接]
14127|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yhx001|  楼主 | 2009-10-30 21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天突然想起是不是可以把以前做好的CSD模块换成CSDADC模块,一是试试这个模块性能如何,而是能顺便加一个AD进去,根据datasheet,发现CSDADC好像除了多了个AD模块在里面,其CSD功能与之前用的CSD模块没什么区别,于是直接把之前设置的参数给了CSDADC模块,烧写后却发现怎么都没法实现触摸按键的功能,不知为何原因,请高手指教。之前直接用CSD模块的话,是可以实现触摸功能的。
沙发
god_like| | 2009-10-31 13:33 | 只看该作者
帮顶

使用特权

评论回复
板凳
yhx001|  楼主 | 2009-11-2 15:16 | 只看该作者
是不是csdadc模块使用的时候,如果start了adc,csd功能就不能实现,非得stop掉adc才可以?

使用特权

评论回复
地板
Go_PSoC| | 2009-11-2 17:18 | 只看该作者
扫了一眼datasheet,CSDADC是CapSense™ Sigma-Delta Plus ADC,按道理应该可以同时使用,建议你研究一下他的datasheet,可能是需要一些设置吧,呵呵

使用特权

评论回复
5
juventus9554| | 2009-11-2 23:38 | 只看该作者
嗯,学习了

使用特权

评论回复
6
luhongmiao520| | 2009-11-3 11:03 | 只看该作者
我也分不清楚,有谁知道的可以告诉我么,49598697,暗号,psoc

使用特权

评论回复
7
love_life| | 2009-11-3 12:11 | 只看该作者
学习了

使用特权

评论回复
8
yhx001|  楼主 | 2009-11-3 13:49 | 只看该作者
如果在while(1)里面需要判断两次滑条的位置,那么在调用wGetCentroidPos()前是不是都得先调用
CSDADC_ScanAllSensors();
CSDADC_UpdateAllBaselines();

我做按键的时候没有问题,滑条判断的时候就出问题了,好像老是判断不到滑条的位置

使用特权

评论回复
9
Apnote| | 2009-11-3 14:17 | 只看该作者
CSD和CSDADC应该在感应这块没有区别啊。

void main()
{
M8C_EnableGInt;
CSDADC_Start();
CSDADC_SetDefaultFingerThresholds();
CSDADC_InitializeBaselines();
while (1)
        {
        CSDADC_ScanAllSensors();
        CSDADC_UpdateAllBaselines();       
        Position=CSDADC_wGetCentroidPos(1);

     if{....}

.........


你可以看看AnalogCoumnMUXBusSwith_1是否设置为AnalogMUXBus_1
还有Analog_LUT1 value是否是"~A" ,这两个地方可能会影响到CSD换成CSDADC...

使用特权

评论回复
10
yhx001|  楼主 | 2009-11-5 10:52 | 只看该作者
如果使用CSDADC中的ADC功能对Port_0_2口输入的模拟量进行AD转换,Port_0_2口的select,driver和Interrupt参数应该如何选择?

AD转换的分辨率是不是6位的?

对Port_0_2,Port_0_4,Port_0_6三路数据进行AD转换,下面AD转换部分的程序这样写对不对?RefValue选的是Vdd/2+_Vdd/2
while(1)
{
......

CSDADC_Start();

CSDADC_EnableADC(CSDADC_ABSOLUTE);

CSDADC_EnableInput(0x04, 0x00); // use P0[2]
CSDADC_StartADC();
while (0 == CSDADC_fIsDataAvailable());
xResult = CSDADC_wGetDataClearFlag();
CSDADC_StopADC();
CSDADC_DisableInput(0x04, 0x02);

CSDADC_EnableInput(0x10, 0x00); // use P0[4]
CSDADC_StartADC();
while (0 == CSDADC_fIsDataAvailable());
yResult = CSDADC_wGetDataClearFlag();
CSDADC_StopADC();
CSDADC_DisableInput(0x10, 0x00);

CSDADC_EnableInput(0x40, 0x00);  // use P0[6]
CSDADC_StartADC();
while (0 == CSDADC_fIsDataAvailable());
zResult = CSDADC_wGetDataClearFlag();
CSDADC_StopADC();
CSDADC_DisableInput(0x40, 0x00);
.....
}

使用特权

评论回复
11
yhx001|  楼主 | 2009-11-5 11:38 | 只看该作者
我采集到的AD转换数据发现一直在变,三路输入是1.66V,1.66v,2.04v,输入是没有变化的,转换后的数据却一直在较大的变化,也不准确

使用特权

评论回复
12
yhx001|  楼主 | 2009-11-5 11:38 | 只看该作者
我采集到的AD转换数据发现一直在变,三路输入是1.66V,1.66v,2.04v,输入是没有变化的,转换后的数据却一直在较大的变化,也不准确

使用特权

评论回复
13
god_like| | 2009-11-5 12:17 | 只看该作者
好多高手,学习了

使用特权

评论回复
14
午夜粪车| | 2009-11-5 22:00 | 只看该作者
不准确怎么回事啊?

使用特权

评论回复
15
五谷道场| | 2009-11-5 22:05 | 只看该作者
对啊,也正想问

使用特权

评论回复
16
yhx001|  楼主 | 2009-11-5 22:17 | 只看该作者
14# 午夜粪车

就是出来的数据不对,如果每一路数据都稳定不变,而数值不对估计还有戏,关键是数值还一直在不断的变化,光采一路信号的时候也是这样,所以想问下,port口的设置到底是怎样的,然后是不是程序中还要注意什么

使用特权

评论回复
17
luhongmiao520| | 2009-11-7 22:03 | 只看该作者
还在学习中

使用特权

评论回复
18
yhx001|  楼主 | 2009-11-9 13:05 | 只看该作者
没有用过的人啊?

使用特权

评论回复
19
love_life| | 2009-11-9 13:30 | 只看该作者
帮顶

使用特权

评论回复
20
yhx001|  楼主 | 2009-11-9 16:37 | 只看该作者
cypress公司的回复我说:From the code I notice that after switching the input, you haven't skipped the next two samples as mentioned in the datasheet. Please skip the two samples after switching the input. Let us know if the response helps. 没看明白是什么意思,请高手指教,多谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

46

帖子

1

粉丝