查看: 3649|回复: 4

[求助] LPC55S69的ADC采样问题

[复制链接]
  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
    发表于 2019-8-2 13:24:38 | 显示全部楼层 |阅读模式
    现在用LPC55S69做项目,ADC采样可以用,初始化的时候有个void LPADC_Init(ADC_Type *base, const lpadc_config_t *config)函数,其中的ADC_Type为/** ADC - Register Layout Typedef */typedef struct {
      __I  uint32_t VERID;                             /**< Version ID Register, offset: 0x0 */
      __I  uint32_t PARAM;                             /**< Parameter Register, offset: 0x4 */
           uint8_t RESERVED_0[8];
      __IO uint32_t CTRL;                              /**< ADC Control Register, offset: 0x10 */
      __IO uint32_t STAT;                              /**< ADC Status Register, offset: 0x14 */
      __IO uint32_t IE;                                /**< Interrupt Enable Register, offset: 0x18 */
      __IO uint32_t DE;                                /**< DMA Enable Register, offset: 0x1C */
      __IO uint32_t CFG;                               /**< ADC Configuration Register, offset: 0x20 */
      __IO uint32_t PAUSE;                             /**< ADC Pause Register, offset: 0x24 */
           uint8_t RESERVED_1[12];
      __IO uint32_t SWTRIG;                            /**< Software Trigger Register, offset: 0x34 */
      __IO uint32_t TSTAT;                             /**< Trigger Status Register, offset: 0x38 */
           uint8_t RESERVED_2[4];
      __IO uint32_t OFSTRIM;                           /**< ADC Offset Trim Register, offset: 0x40 */
           uint8_t RESERVED_3[92];
      __IO uint32_t TCTRL[16];                         /**< Trigger Control Register, array offset: 0xA0, array step: 0x4 */
      __IO uint32_t FCTRL[2];                          /**< FIFO Control Register, array offset: 0xE0, array step: 0x4 */
           uint8_t RESERVED_4[8];
      __I  uint32_t GCC[2];                            /**< Gain Calibration Control, array offset: 0xF0, array step: 0x4 */
      __IO uint32_t GCR[2];                            /**< Gain Calculation Result, array offset: 0xF8, array step: 0x4 */
      struct {                                         /* offset: 0x100, array step: 0x8 */
        __IO uint32_t CMDL;                              /**< ADC Command Low Buffer Register, array offset: 0x100, array step: 0x8 */
        __IO uint32_t CMDH;                              /**< ADC Command High Buffer Register, array offset: 0x104, array step: 0x8 */
      } CMD[15];
           uint8_t RESERVED_5[136];
      __IO uint32_t CV[4];                             /**< Compare Value Register, array offset: 0x200, array step: 0x4 */
           uint8_t RESERVED_6[240];
      __I  uint32_t RESFIFO[2];                        /**< ADC Data Result FIFO Register, array offset: 0x300, array step: 0x4 */
           uint8_t RESERVED_7[248];
      __IO uint32_t CAL_GAR[33];                       /**< Calibration General A-Side Registers, array offset: 0x400, array step: 0x4 */
           uint8_t RESERVED_8[124];
      __IO uint32_t CAL_GBR[33];                       /**< Calibration General B-Side Registers, array offset: 0x500, array step: 0x4 */
           uint8_t RESERVED_9[2680];
      __IO uint32_t TST;                               /**< ADC Test Register, offset: 0xFFC */
    } ADC_Type;
      __I  uint32_t VERID;                             /**< Version ID Register, offset: 0x0 */这个寄存器是控制选择采集多少位AD,是否差分模式。但是这个定义为只读模式,没办法修改,我怎么修改能满足我所需的单端的16位ADC采集?

    最佳答案

    楼主你好! 你贴出来的代码其实是ADC模块对应的寄存器。 关于具体支持多少位,你可以查看LPC55S69的芯片手册,ADC章节,里面会有具体的寄存器介绍,查看各个寄存器的功能,然后配置对应的寄存器,另外,官方的SDK代 ...
    今天天气不错!签到!
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24882
    最后登录
    2025-7-20
    发表于 2019-8-2 13:49:14 | 显示全部楼层
    楼主你好!
    你贴出来的代码其实是ADC模块对应的寄存器。
    关于具体支持多少位,你可以查看LPC55S69的芯片手册,ADC章节,里面会有具体的寄存器介绍,查看各个寄存器的功能,然后配置对应的寄存器,另外,官方的SDK代码例程你也可以看看,ADC的例程里面应该会有对应的例程。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2019-8-2 13:53:01 | 显示全部楼层
    本帖最后由 七七bb 于 2019-8-2 13:54 编辑
    小恩GG 发表于 2019-8-2 13:49
    楼主你好!
    你贴出来的代码其实是ADC模块对应的寄存器。
    关于具体支持多少位,你可以查看LPC55S69的芯片手 ...

    我就是看到官方的例程,是16位ADC,但是例程是差分模式,并且我还没找到怎么修改它的寄存器,里面的ADC_Type是在LPC55S69_cm33_core0.h这个里面定义的,我怕改了出错,例程里初始化的时候也没找到初始化对应寄存器的内容,比较奇怪
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2019-8-5 16:37:14 | 显示全部楼层
    晕,寄存器没找到正确的位置,搞定了
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24882
    最后登录
    2025-7-20
    发表于 2019-8-5 19:28:25 | 显示全部楼层
    七七bb 发表于 2019-8-5 16:37
    晕,寄存器没找到正确的位置,搞定了

    好的,后续如果还有问题,欢迎继续发帖交流。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 23:30 , Processed in 0.096208 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表