MSPM0G3507 TIM+DMA+ADC

理论

单通道单次转换
  • 影响采样速率的是 转换时钟 (80MHz 振荡器),ADC CLOCK SOURCE 维持默认配置
  • Conversion mode: 单通道 ADC, 双通道等等
DL_ADC12_startConversion() // 默认是 0
DL_ADC12_stopConversion()

DL_ADC12_enableConversions() // 配置 sysconfig 后默认是 1
DL_ADC12_disableConversions()
  • 首先调用DL_ADC12_startConversion(), 一次转换后再进行转换的话要再次调用 DL_ADC12_enableConversions(), 再调用DL_ADC12_startConversion()

使能 ADC 中断 DL_ADC12_startConversion(ADC12_0_INST)

单通道连续转换
使用 ADC 内部定时器
  • Conversion Mode: Single
  • 打开 Enable repeat mode,为使用 DMA
    这时 enable 位始终是 1
  • 采样模式:auto 和 manual, 一般使用 auto (看 Discription) 用定时器 0 触发采样
  • Trigger Source: 选 event
  • FIFO Mode: 组合两个 16 位 Memory 成 32 位,能降低调用 DMA 中断频率,提升效率;同时在 DMA 进行修改:Enable DMA Triggers 可以改成 使用 Memory10, 因为是两个合并的;DMA Sample Count 改成 6;Transfer Size 改成原来的一半;Source Length 和 Destination Length 改成 Word。DMA 起始地址改成 DL_ADC12_getFIFOAddress(ADC12_0_INST)(ADC12_0_实例)
  • Power down mode: Manual,一直上电
  • 采样时间 62.5 ns

DMA 配置
在这里插入图片描述

  • Address mode 选择 fixed to block
  • 选择半字节 Half Word
  • Transfer Size: 1000 个之后中断
  • Transfer Mode: Repeat Single,传 1000 次之后回到开头?
  • 起点终点不能动
使用 定时器触发

ADC 配置

  • Conversion Mode: Single
  • Enable Repeat Mode
  • Triuggler Source: Event 触发
    Advanced Configureation
  • Power Down Mode: Manual
  • Interrupt Configuration: DMA done
    DMA Configuration
    在这里插入图片描述
    开定时器
  • Timer Clock Source: BUSCLK
  • Timer Mode: Periodic Down Counting
  • Event Configuration: Event 1 Publisher Channel ID; Zero Event
  • 修改 ADC12 的 Event Configuration:Event Subscriber Channel ID
  • 在 ADC 的 Sampling Mode Condiguration / ADC Conversion Memory Configurations / Optional Configuration / Trigger Mode 改成 Valid Trigger will step to …

用 adc_max_freq_dma 例程 进行编写

  1. 设置 DMA 起始寄存器的地址 和 目标寄存器的地址
  2. 使能 DMA 通道
  3. 使能 ADC 中断
  4. 编写中断回调函数:停止定时器,打开定时器
  5. 不用标志位
    在这里插入图片描述
    之后只要更改定时器的 Desired Timer Period,定时器原来频率 1MHz

如何实现 4M 采样率

  • Enable Repeat Mode
  • 软件触发
  • DMA 传输
多通道单次转换
多通道连续转换

必须用 FIFO

  • __WFE() 是 wait for event,让处理器进入 低功耗等待状态 ,直到发生某个事件(event)为止。一旦发生中断或设置了 event flag,MCU 就会从等待中恢复。
  • __BKPT() 软件断点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值