EDN首页   博客首页

日志档案

发表于 2008-3-25 10:39:26

5

标签: 2430  ADC初始化  

2430的A/D程序

有朋友问2430的AD初始化及数据处理.重复回答很辛苦,就在这里贴出来吧.
如果对你有帮助,请记得顶一下.

/****************************************************************
*函数功能 :初始化ADC      *
*入口参数 :无                      *
*返 回 值 :无                      *
*说    明 :参考电压AVDD,转换对象是1/3AVDD                                        *
****************************************************************/
void InitialAD(void)
{
 ADCH &= 0X00;  //清EOC标志 
 ADCCON3=0xbf;  //单次转换,参考电压为电源电压,对1/3 AVDD进行A/D转换
      //14位分辨率
 ADCCON1 = 0X30;  //停止A/D

 ADCCON1 |= 0X40; //启动A/D

//因没有取外部电压作为A/D输入,所在没有配置ADCCFG

}

数据处理

INT16U readadc(void){

   temp[1] = ADCL;         //取AD值
   temp[0] = ADCH;
   ADCCON1 |= 0x40;    //开始下一转换

   temp[1] = temp[1]>>2;
   temp[1] |= temp[0]<<6;

   temp[0] = temp[0]>>2; //数据处理
   //temp[0] &= 0x3f;       //排错时写的,没有用

   result = (temp[0]*256+temp[1])*3.3/8192;  //有一位符号位,取2^13;

}

系统分类: 单片机   |   用户分类: 单片机   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1226)    回复(18)  

投一票您将和博主都有获奖机会!

  • hxqhit

    2008-5-22 16:09:29

    呵呵,很不错的哦 收藏了,谢谢!

  • am232456

    2008-7-19 16:13:56

    版主你好 我近來使用 TI CC2430 + Smartrf04eb 做研究 最近做到ADC + RS-232 傳送到電腦超級終端機顯示的時候一直變成亂碼,參考版主的程式碼也一樣,請問是我哪裡問題,我是採用外部輸入電壓(5V) 我希望做完AD轉換後,可以透過RS232 傳到超級終端機顯示5V ,請問程式碼要如何寫?

  • am232456

    2008-7-19 16:15:43

    标签: 2430 ADC初始化 2430的A/D程序 版主你好 我近來使用 TI CC2430 + Smartrf04eb 做研究 最近做到ADC + RS-232 傳送到電腦超級終端機顯示的時候一直變成亂碼,參考版主的程式碼也一樣,請問是我哪裡問題,我是採用外部輸入電壓(5V) 我希望做完AD轉換後,可以透過RS232 傳到超級終端機顯示5V ,請問程式碼要如何寫?

  • am232456

    2008-7-19 16:18:13

    抱歉,因為電腦和網路有點問題導致重複發太多回復

  • emot

    2008-7-21 9:52:45

    你好,2430的ADC输入不可以高于参考电压(max 3.3v),否则ADC结果无效,而且输入5V的话可能会把2430烧坏的。我手上有2430ADC,232的程序,我的邮箱是emotacer@163.com,来函回复给你。

  • am232456

    2008-7-21 19:40:36

    請問版主,如果要從 P0_7 輸入 3V 電壓做AD 轉換則程序該怎麼寫,cc2430db 是否有內建天線,如果要從cc2430db 將一組字串無線傳輸到 cc2430EM(與Smartrf04eb)做接收 則程序該怎麼寫,請版主指教,謝謝版主

  • am232456

    2008-7-21 23:04:22

    請問版主,從P0_7 可以輸入一變化電壓嗎(0-3V)? 在程式執行的時候變化電壓以顯示電壓值,只有 P0_7 可以輸入嗎? 還是P0都可以,程序如何做,請版主指教,謝謝

  • am232456

    2008-7-21 23:06:52

    請問版主,從P0_7 輸入可變化電壓(0V-3V)後,在程式執行時轉換完後還可以透過RS232 傳到超級終端機顯示電壓值嗎 ? 謝謝

  • am232456

    2008-7-21 23:47:07

    請問版主 ADCCON3=0xbf; //单次转换,参考电压为电源电压,对1/3 AVDD进行A/D转换 //14位分辨率 這部份是什麼意思,數據處理是否可以說明更詳細一點(不懂意思),另外試了版主的程序,為何是顯示 0.5V ,應該試 1V-3V 左右吧,請版主說明一下,謝謝

  • emot

    2008-7-23 15:59:45

    复am232456: ADCH &= 0X00; //清EOC标志 ADCCON3=0xb7; //单次转换,参考电压为电源电压 //14位分辨率 ADCCON1 = 0X30; //停止A/D ADCCON1 |= 0X40; //启动A/D

  • am232456

    2008-7-24 12:21:12

    請問版主,雖然現在AD轉換 到 RS232 有顯示數值,不過為何我變化電壓數值沒有跟著改變,我是接 P0_7 請問是否有要設定 P0SEL P0DIR ADCCFG ADC 中斷 等,參考電壓既然為 AVDD_SOC PIN 應該就不用接電了吧 還是說 AVDD_SOC 是怎麼接,由於我的CC2430+Smartrf04eb,版子上只有P0 P1 P2 2個VDD GND 能外接,因此我不清楚是否有接錯,謝謝

  • am232456

    2008-7-24 12:23:52

    補充一下,我的電壓數值約從 0V-3V 變化,可是超級終端機上顯示的數值一直是 0.5V 1.6V 0.1 V 這類的數值 這類的數值是改 ADCCON2 才變化如此數值,但在終端機上顯示的數值並未因電壓變化而改變,不知是否我接錯或是程式改的有誤

  • emot

    2008-7-25 16:24:42

    ADCCON2控制着连续转换,ADC的结果会一直更新,不过也需要用程序不断地去读这个值并显示出来才能体现。 你得到的结果是几个特殊的值,原因可能是你的数据处理得不对。

  • am232456

    2008-7-25 17:57:39

    請問 ADCCON2 ADCCON3 差別在哪 ? 是否可以詳細說明數據處理的部份 ? 由於我是從 P0_7 輸入一個可變化電壓,做完AD轉換後 透過RS-232 在超級終端機上顯示 0V-3V 數據處理幾乎參考版主的,因此是哪裡出問題要請版主指導一下,謝謝

  • am232456

    2008-7-28 11:57:22

    版主你好,我的AD 不論怎麼改數據處理的部份,數值就是沒有隨電壓變化而改變數值,程序部分是參考版主的程序,加上 ADCCON2 ADCCON3 差別我也還是不懂,請版主旨指導,謝謝

  • emot

    2008-7-30 9:07:54

    ADCCON2 ADCCON3的区别是 ADCCON2 选定的AD转换会连续不断地自动再次AD转换 ADCCON3 选定的AD转换一旦转换完了ADC就会停止AD转换了。 如果还不明白,那就只能体会手册了。 你可以直接把ADC的结果输出,手工这个值换成电压,如果正确则说明是数据处理不对,如果不正确,则表明AD设置有误。

  • agathake

    2008-11-13 14:19:50

    请问CC2430的ADC输入可否有负电压?比如参考电压为1.25V,输入电压可否为+/-1.25V,看资料上写模拟输入为VREF时AD转换值为8191,写模拟输入为-VREF时AD转换值为-8192。是这样吗?

  • emot

    2008-11-17 9:45:14

    我没有采过负压, 看TI关于AD的代码,和手册上都应该是可以采负压的.