查看: 7185|回复: 10

【有奖征文】LM4F Launchpad之ADC多通道序列采样

  [复制链接]
  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-28 00:08:45 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ming1006 于 2012-12-28 12:32 编辑

        我拿到LM4F Launchpad已经有一段时间了,但因为之前有点事,调PWM程序一直不出来,点亮LED等之类的教程已经有人发过,所以一直没有发表学习心得。这两天花了点时间终于调好了ADC多通道序列采样的程序,在此和大家分享了。 关于ADC的介绍我想大家可以阅读官方的说明书,我就不多介绍了。本次实验我使用的是TI的CCS,其中用到了一些CCS的调试技巧,包括graph的使用,有兴趣的可以学学。下面让我们来一步一步建立我们的工程。
        1.打开CCS建立工程,配置如下:
        未命名.jpg
        2.在工作空间中右击ADC工程,选中Properties->build->ARM Compiler->Include Options,在包含路径中加入StellarisWare固件库的路径,我的是"D:\ti\StellarisWare",请根据你的路径修改
        未命名1.jpg
        在build->ARM Linker->File Search Path下包含要用的driverlib-cm4f.lib
        未命名2.jpg
        3.至此工程的基本设置就完成了,下面是主函数,注释很详细,我就不多说了
    1. /*
    2. * main.c
    3. */
    4. #include "inc/hw_types.h"
    5. #include "inc/hw_memmap.h"
    6. #include "driverlib/adc.h"
    7. #include "driverlib/sysctl.h"
    8. #include "driverlib/gpio.h"

    9. #define VREF 3300.0    //参考电压3.3V

    10. //******************************************************************
    11. //本工程使用ADC0的采样序列1来实现多通道序列采样,采样序列1支持4个步进,
    12. //我们使用了三个步进,采样的通道依次为为CH0(PE3),CH1(PE2),CH2(PE1),
    13. //******************************************************************
    14. void main(void)
    15. {
    16.         unsigned long value[3];                                //采样的数据
    17.         unsigned short voltage[3];                        //转换后的电压

    18.         //设置PLL,ADC时钟为16MHz
    19.         SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL |
    20.                                 SYSCTL_XTAL_16MHZ);
    21.         //使能ADC0
    22.         SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
    23.         //使能ADC采样通道所在管脚对应的GPIO
    24.         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    25.         //设置GPIOE的PIN1,PIN2,PIN3为ADC功能引脚
    26.         GPIOPinTypeADC(GPIO_PORTE_BASE,GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3);

    27.         //配置前先禁止ADC采样序列
    28.         ADCSequenceDisable(ADC0_BASE,1);
    29.         //配置ADC0,采样序列为1,采用处理器触发启动采样,优先级0
    30.         ADCSequenceConfigure(ADC0_BASE,1,ADC_TRIGGER_PROCESSOR,0);
    31.         //设置ADC0的步进0(即序列的第一个采样):输入通道0
    32.         ADCSequenceStepConfigure(ADC0_BASE,1,0,ADC_CTL_CH0);
    33.         //设置ADC0的步进1:输入通道1
    34.         ADCSequenceStepConfigure(ADC0_BASE,1,1,ADC_CTL_CH1);
    35.         //设置ADC0的步进2:输入通道2,中断使能,并说明这是采样序列的终止(最后一步)
    36.         ADCSequenceStepConfigure(ADC0_BASE,1,2,ADC_CTL_CH2 |
    37.                         ADC_CTL_IE | ADC_CTL_END );
    38.         //使能ADC采样序列1
    39.         ADCSequenceEnable(ADC0_BASE,1);
    40.         //清ADC采样序列1中断
    41.         ADCIntClear(ADC0_BASE,1);
    42.         while(1)
    43.         {
    44.                 //触发ADC转换
    45.                 ADCProcessorTrigger(ADC0_BASE,1);
    46.                 //等待转换完成
    47.                 while(!ADCIntStatus(ADC0_BASE,1,false))
    48.                 {

    49.                 }
    50.                 //读采样序列FIFO中的采样结果(一次性将所有step的数据都读出)
    51.                 ADCSequenceDataGet(ADC0_BASE,1,value);
    52.                 //延时
    53.                 //SysCtlDelay(SysCtlClockGet());
    54.                 //将采样数据则算成电压(单位mV)
    55.                 voltage[0] = value[0] / 4096.0 * VREF;
    56.                 voltage[1] = value[1] / 4096.0 * VREF;
    57.                 voltage[2] = value[2] / 4096.0 * VREF;
    58.         }
    59. }
    复制代码
    4.用滑动变阻器设置了三个电压分别接到PE1,PE2和PE3,点debug进入调试,在variables中右击各变量,都选中watch将他们加入变量窗口,都选中graph可以实现图形化的变量观察
           未命名4.jpg
        在程序的最后一句设置断点,并右击断点,选择breakpoint properties->Debug Response->Action,设置为Refresh All Windows
        点F8,调节滑动变阻器,我们可以在Expressions窗口中看到采样值和转化后的电压值,从Graph图可以更直观的观察变量以及变量的变化。
             未命名5.jpg

        下面是完整的CCS工程,只要把StellarisWare固件库的路径和driverlib-cm4f.lib 的路径改成你的就可以了
    ADC.zip (29.62 KB, 下载次数: 41)
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-2-28 11:51
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2012-12-28 09:31:04 | 显示全部楼层
    沙发。。。写得很详细。。加油!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-5-9 12:20
  • 签到天数: 350 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-12-28 10:18:53 | 显示全部楼层
    看见QQ宠物了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-28 12:27:34 | 显示全部楼层
    cpace 发表于 2012-12-28 09:31
    沙发。。。写得很详细。。加油!

    因为要断网了,所以有些地方不是很详细
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-28 12:28:06 | 显示全部楼层
    木木 发表于 2012-12-28 10:18
    看见QQ宠物了。

    呵呵,靓照秀起来
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-28 12:32:53 | 显示全部楼层
    昨天忘了传工程,现在已经上传了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2013-9-15 13:27
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2012-12-28 23:12:47 来自手机 | 显示全部楼层

    可以做个示波器,速度蛮快的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-12-20 15:08
  • 签到天数: 510 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-12-28 23:25:37 | 显示全部楼层
    我啊 发表于 2012-12-28 23:12
    可以做个示波器,速度蛮快的

    配合labview和usb应该可以达到很高的采样率
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2014-8-26 16:52
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-7-16 21:04:45 | 显示全部楼层
    向楼主看齐!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2014-8-5 07:46
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-12-9 17:36:53 | 显示全部楼层
    寫得很清楚  謝謝
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-1 10:31 , Processed in 0.179339 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.