钻石会员
主题
帖子
积分18337
阅读权限50
注册时间2010-5-28
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2014-7-4 16:39
|
显示全部楼层
LZ有没有考虑过,直接用5V输出的开关电源,这样降压部分就省了,而且只要开关电源质量好,烧机什么的就不用担心了。
另外ad数据对齐读取时如果先后顺序错误将导致第一个高字节错误。
我当然有考虑啊.
之所以选择在板上降压考虑有2:
1: 5V大电流的充 电器不是很容易找,也不便宜.而相对12V以上3A的充电器比皆是/
2: 大电流情况下线损会影响USB电压,感觉对布线要求较高.而3R33的话,输出离USB插座脚位是非常的近了.
AD数据对齐...
我上代码吧,请指教:
- void ADC1_Init_Single(u8 ch)
- {
- //设置数据右对齐
- ADC_CR2 |= 0x08;
- //设置为单次转换模式
- ADC_CR1 &= ~0x02;
- //选择要转换的通道
- ADC_CSR &= 0xF0;
- ADC_CSR |= ch;
- //设置时钟预分频,默认8分频
- ADC_CR1 &= 0x8F;
- ADC_CR1 |= 0x40;
- //失能外部触发
- ADC_CR2 &= 0xbf;
- //失能斯密特触发器,降低功耗
- if(ch<8)ADC_TDRL |=(u8)(0x01)<<ch;
- else ADC_TDRH |=(u8)(0x01)<<(ch-8);
- //使能ADC1
- ADC_CR1 |= 0x01;
- }
- //ADC1取得单次转换的结果
- //输入参数:存储转换结果的地址
- //输出参数:无
- //备注:默认右对齐
- void ADC1_Get_Single(u16 *data)
- {
- u8 tmp;
- //启动一次转换
- ADC_CR1 |= 0x01;
- //等待转换结束
- while(!(ADC_CSR&0x80));
- //清标志
- ADC_CSR&=~0x80;
- tmp = ADC_DRL;
- *data =(ADC_DRH);
- *data =(*data<<8)|tmp;
- }
复制代码
|
|