概述
话说CC2530ADC转换位数
打个比方:TI的开发Zigbee协议栈这伙人 接到的通知是TI提供的这个位数 即 8,10,12,14,这个位数包括了符号位,所以在Zigbee协议栈处理数据的时候分别左移8,5,4,2位。
再打个比方:测试这伙人说,不对啊,不精准啊,咱们重新起个名吧,叫有效位,就是实际有效的位数,有效位咱们就不提符号位了。嗯,第一个:8位(TI位)的还凑合,挺准,有效位直接去掉符号位就叫他7位(实际有效位)。其他的都不准那,最后边去掉1位还可以 去掉1位看看,嗯,这回差不多。测试文档:实际有效位 7,9,10,12。
情节1:
测试:开发哈,你改一下哈,测得这个位数的精度比较准。
开发:你可得了吧,咱么这专业的电气工程师,亲自提供的算法,你给改了我拿什么去写开发文档。就说是你估计的?没理论别瞎联系实际行不。
情节2:
测试:老板,你看,开发不听我的,他说没有依据,就不顾实际值。我觉得还是精度对于用户来说重要。
老板:这样吧,提供技术文档的时候把你们两个的想法都加进去,让用户自己去选择,这样咱们既有测试,又有理论依据。而且就是后边差了哪一位,就差1个精度(最小变化值)[看不出就差1个精度的回去掰手指算]。不会出太大的问题,差不多就行了哈。
情节3:
测试:老板说了,把我的结果也写到技术文档里,让用户自己去选择,是理论重要还是实际重要,能开发个接口不?让用户选择。
开发:加什么接口,加不了加不了。要改自己改去,理论就是对的,要实际结果让他自己改去,都给实际有效位了,还想咋地。不会自己改玩什么Zigbee!
测试:哦哦,那好吧。
所以,各位用户,理论 还是 实际 你们自己选嘛!
/*使用实际有效位:*/
//7位
value = ADCH<<8;
value |= ADCL;
value >>= 8
Vo = value/2^7*Vref;
//(2^7自己算去C语言不这么提供!Vref:参考电压!你自己选的)
//value :16位无符号整型
//Vo :float double 自己选
//9位
value = ADCH<<8;
value |= ADCL;
value >>= 6
Vo = value/2^9*Vref;
//10位
value = ADCH<<8;
value |= ADCL;
value >>= 5
Vo = value/2^10*Vref;
//12位
value = ADCH<<8;
value |= ADCL;
value >>= 3
Vo = value/2^12*Vref;
/*使用TI位:*/
//8位
value = ADCH<<8;
value |= ADCL;
value >>= 8
Vo = value/2^(8-1)*Vref;
//(减一的原因是:去掉符号位,实际有效位的算法是没有符号位的!!)
//value :16位无符号整型
//Vo :float double 自己选
//10位
value = ADCH<<8;
value |= ADCL;
value >>= 5
Vo = value/2^(10-1)*Vref;
//12位
value = ADCH<<8;
value |= ADCL;
value >>= 4
Vo = value/2^(12-1)*Vref;
//14位
value = ADCH<<8;
value |= ADCL;
value >>= 2
Vo = value/2^(14-1)*Vref;
第一发帖 手动添加[慌张.jpg]
最后
以上就是美丽嚓茶为你收集整理的CC2530ADC转换位数的全部内容,希望文章能够帮你解决CC2530ADC转换位数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复