配置msp432e401y的ADC采样达到2M

这篇具有很好参考价值的文章主要介绍了配置msp432e401y的ADC采样达到2M。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

配置msp432e401y的ADC采样达到2M

配置msp432e401y的ADC采样达到2M

电赛期间收到了TI公司提供的msp432e401y开发板。手册上标明ADC采样率可以达到2M,但在TIDriver里好像最大开到500k的采样率。在网上找了半天,没有找到相关代码的帖子,索性自己研究手册,配置出2M采样率。

例程代码

在msp432e4的sdk文件中里找到.\examples\nortos\MSP_EXP432E401Y\demos\cmsis_msp432e4_dsp_example工程文件。
例程使用driverlib库,开启ADC与DMA传输,使用定时器作为ADC的trigger,结合ARM的DSP库,实现DMA乒乓模式采集ADC数据&FFT操作。
通过修改cmsis_msp432e4_dsp_example.c中的

//cmsis_msp432e4_dsp_example.c

#define NUM_SAMPLES 1024
#define SAMP_FREQ   100000

来修改采样点数与采样速率。直接修改此代码的参数,可使ADC最大速率达到1M,SAMP_FREQ大于此速率时ADC采样率也为1M。

ADC采样率提高到2M

ADC采样率

在官方参考手册《MSP432E4 SimpleLink™ Microcontrollers Technical Reference Manual》中
P707:
msp432e401y,msp432e401y,单片机,嵌入式硬件
指出了采样速率与ADC时钟、采样保持时间的关系。可以看到,在fADC=16MHz时,ADC最大采样率fCONV=1Msps(NSH默认为4),想要达到fCONV=2Msps,须使fADC=32MHz。

ADC时钟

在官方参考手册《MSP432E4 SimpleLink™ Microcontrollers Technical Reference Manual》中
P205
msp432e401y,msp432e401y,单片机,嵌入式硬件

给出了ADC的三个时钟源(也可见P206-4.1.5.2.1.1)。
其中

  1. MOSC为主晶振,连接到外部晶振,MSP432E401Y开发板上面的外部高速晶振Y3频率为25MHz。
  2. PIOSC为内部精密时钟,频率为16MHz。此时钟为默认ADC时钟。
  3. PLL VCO为锁相环输出频率,可设置为480MHz或320MHz(见P209-4.1.5.5.1)。此时钟满足我们的要求。

修改代码

在例程中,PLL被设置到了480MHz,我们需要将其15分频给ADC,由此产生36MHz的ADC时钟。但是尝试之后仍还是1Msps采样率。经过试验,发现由于某些原因,由PLL到ADC经过分频之后会再2分频。我没有在手册中找到说明,可能需要再研究一下手册。
知道此信息之后,我们需要给ADC提供一个64MHz的频率,480MHz不方便通过整数分频得到64MHz,但是可以通过320MHz的时钟进行5分频得到。
我们参考P209
msp432e401y,msp432e401y,单片机,嵌入式硬件

首先将fVCO=480MHz,fSYSCLK=120MHz
修改为fVCO=320MHz,fSYSCLK=80MHz
代码修改如下↓:

//cmsis_msp432e4_dsp_example.c

    /* Configure the system clock for 120 MHz */
//systemClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
//                                      SYSCTL_OSC_MAIN |
//                                      SYSCTL_USE_PLL |
//                                      SYSCTL_CFG_VCO_480), 120000000);
    /* Configure the system clock for 80 MHz */
systemClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
                                      SYSCTL_OSC_MAIN |
                                      SYSCTL_USE_PLL |
                                      SYSCTL_CFG_VCO_320), 80000000);

同时,配置ADC的时钟,使用PLL时钟,进行5分频
在例程语句↓:

//cmsis_msp432e4_dsp_example.c

/* Enable the clock to ADC-0 and wait for it to be ready */
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_ADC0)))
{
}

之后加上语句↓:

//cmsis_msp432e4_dsp_example.c

ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL, 5);

最后修改采样触发速率参数↓:

//cmsis_msp432e4_dsp_example.c

#define NUM_SAMPLES 1024
#define SAMP_FREQ   2000001

此处SAMP_FREQ为2000001而不是2000000,是因为测试发现2000000时采样率只能达到1.8Msps,而2000001就正好为2Msps了(1999999为1.8Msps,1900000为1.85Msps左右),很奇怪。
此外,可以选择fVCO=480MHz,再进行7分频得到约68.5MHz的ADC时钟,再修改相关参数可以达到更大的采样速率,而且不会降低主频(上述代码将主频从120M降低到80M),测试了一下发现ADC在2.5Msps速率下也是可以运行的,但是不知道长时间使用会对ADC造成什么影响。

结果

测试信号使用8kHz的方波:
msp432e401y,msp432e401y,单片机,嵌入式硬件在CCS中设置断点查看采集的数据
msp432e401y,msp432e401y,单片机,嵌入式硬件可以看到方波一个周期采集了250个点,采样率为250*8k=2Msps。

END

上文为配置msp432e401y的ADC采样达到2M的方法,目前对这个板子的了解还不深,文中有什么错误请指出。也有一些疑惑比如为什么PLL到ADC会再2分频,SAMP_FREQ为2000000与2000001为什么会相差较大,有没有大神可以指点一下。文章来源地址https://www.toymoban.com/news/detail-568430.html

到了这里,关于配置msp432e401y的ADC采样达到2M的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • msp432p401r 编码器电机程序

            编码器电机的原理网上有很多,如果不懂可以看下这个博主的文章STM32应用(九)编码器及其测速原理、L298N电机驱动控制编码器电机_長空雁的博客-CSDN博客         在这里博主只讨论如何去用软件采集测速。 编码器的AB相会输出方波,因为432p系列没有编码器模式

    2024年02月14日
    浏览(53)
  • MSP432P401R LaunchPad教程 基于keil的开发环境

    专栏目录 MSP432P401R LaunchPad教程 基于keil的开发环境 MSP432P401R LaunchPad教程(一)时钟配置 MSP432P401R LaunchPad教程(二)keil环境配置 MSP432P401R LaunchPad教程(三)滴答定时器 最近开始拾起MSP432401R LaunchPad这块板子 想学习一下 并且记录自己的学习过程 希望出错之处望指正 自己是学

    2024年02月15日
    浏览(59)
  • 【MSP432P401R】基于Keil平台的工程模板的创建

    一、说明         首先感谢BiliBili UP主m-RNA与其它博主,为准备2023年电赛,开始着手准备主控的代码库,本开源MSP432P401R工程(预计2023/2/26基本完成,届时提供开源链接)基于m-RNA的开源库进行学习修改移植而来,也为将来学弟、学妹的的学习做一些铺垫。 二、工程的创建

    2024年02月17日
    浏览(48)
  • 基于MSP432P401R爬坡小车【2020年电赛C题】

    主控板: MSP432P401R 数据显示: OLED 电机: 霍尔编码器电机 电池: 7.3V航模电池 巡线: OpenMV H7 Plus 警报: 蜂鸣器 电机驱动: TB6612 仪器: 3D打印机 视觉云台: 3D建模打印 转向: 数字舵机 其他: 铜柱、螺丝螺母、开关、面包板等。 编译器: Keil、OpenMV IDE 建模软件: Sketc

    2024年02月15日
    浏览(46)
  • MSP430 ADC12 最高采样率测试

    使用的MSP430型号为 MSP430F5529LP (Lauchpad) MSP430x5xx and MSP430x6xx Family User\\\'s Guide 给出: 其内置12位ADC的 最高采样率约为200ksps 下面详述ADC设置过程。 目录 1.设置ADC转换模式为Repeat-single-channel; 2.设置ADC的转换时钟sample-and-hold source (SHI) 3.设置定时器A为输出模式 4.设置输入通道

    2023年04月08日
    浏览(50)
  • openmv与msp432串口通信

    根据 OpenMV与stm32,msp432等单片机的串口通讯(已经写好一个识别色块的例程,可直接使用)keil(MDK)改进。 一、首先有一个大思想的问题,举个例子就是假如msp432充当“大脑”,openmv就相当于“眼睛”,那么链接所写的就是“眼睛”一直在向“大脑”发送数据,中断会一直

    2024年02月16日
    浏览(43)
  • MSP432学习笔记5——外部中断

    所用单片机型号:MSP432P401r 今日继续我的MSP432电赛速通之路。 外部中断是个很有用的配置 STM32几乎每个I/O口都能配置复用为外部中断 但MSP432并不是这样。 我经过查阅数据手册发现 支持中断的引脚 为: P1^0~ P1^7        P3^0~ P3^7     P5^0~ P5^7 P2^0~ P2^7        P4^0~ P4^7  

    2024年02月07日
    浏览(48)
  • MSP432库函数学习笔记-GPIO

    简述MSP432Pxx-GPIO库的各函数 1,GPIO模式设置,PxDIR寄存器 2,GPIO复用功能配置,PxSEL寄存器 3,GPIO输出电平设置,PxOUT寄存器 4,GPIO输入模式下上/下拉电阻选择,PxREN寄存器 5,GPIO输入读取模式设置,PxIN寄存器 6,GPIO中断模块设置 1,中断使能寄存器PxIE 2,获取选择I/O口上的中

    2024年02月16日
    浏览(62)
  • MSP432学习01--新建keil空工程

            为了准备电赛和深入学习嵌入式编程为后面研究FOC电机驱动做准备,入手了一块TI的MSP432P4开发板,在这里开一个系列博文来记录学习过程方便复习:         首先是在keil里创建新工程项目,因为之前的项目用的都是keil开发平台,所以这次准备创建一个空工程以

    2024年02月16日
    浏览(43)
  • MSP432学习笔记2——GPIO输入输出

    今日继续更新我的MSP432速通笔记 新的硬件芯片到手,脑子是空白的,板子是漆黑的,诺想要缓解这份尴尬,便来点灯吧! 今日主要速通MSP432的GPIO输入输出功能,目标是连接矩阵键盘与LED流水灯模块 到MSP432P401R开发板上进行练习。 文章 附上原理图与代码 目录 ​编辑 基础知

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包