21年电赛仪器仪表类a题要求必须使用TI公司生产的单片机,且不能使用片外AD,当时暑期的时候在电赛官网上有答题签到领板卡的活动,所以我们当时有两块MSP432E401Y型号的开发板在手上,查过资料后发现MSP432E401Y的ad是12位,采样率能到1M,最后定了用这个型号。

整体下来这款型号的单片机能满足题目要求,而且IDE比较好上手,且不用很复杂的插线,板卡上自带调试芯片,只用插上一根线就能在CCS上进入调试,所以最后也是相对比较顺利的做完了比赛。唯一的缺点就是MSP432E401Y这款芯片网上的资料少之又少,所以最开始上手的时候简直是折磨,所以准备寒假期间重新整理一下相关资料和我们比赛的源码,简单写一些关于MSP432E401Y的AD方面的文章。

目录

MSP432E401Y的介绍

关于MSP432E401Y时钟和AD的初始化


MSP432E401Y的介绍

MSP432E401Y这款板卡在官方给的参考手册里的描述是“以太网微控制器”,也就是说这款板卡开发出来主要是为了网络相关方面的应用,关于网络的部分本人了解很少,所以这里只挑出来关于AD方面有用的部分。

以下部分来自于中文参考手册,我会附在文章后。

  1. 120MHz ARM® Cortex® - 具有浮点运算单元 (FPU) 的 M4F 处理器内核
  2. 2个基于 12 位 SAR 的 ADC 模块,每个模块支 持高达 200 万次/秒的采样率 (2Msps)
  3. 3 个独立的模拟比较器控制器
  4. 16 个数字比较器

可以看到,在AD采样方面这款板卡的配置不低,以我目前的水平采样率能设置到1Msps,至于手册上2Msps的采样率我目前是没有完全的研究明白,虽然可以通过两个AD交叉采样实现,但是有传言说通过更改时钟单个AD也可以实现2Msps的采样率,这也是我写学习笔记的这几天里希望能研究明白的东西。

关于MSP432E401Y时钟和AD的初始化

首先是关于时钟的初始化

    uint32_t systemClock;/* 使能系统时钟到120 MHz */systemClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),120000000);

这里是关于板卡的系统主频(120MHz)、无源晶振(XTAL)、有源晶振(OSC)、锁相环(PLL)和压控振荡器(VCO)的配置和使能。

然后是关于GPIO的初始化

    /* 使能GPIOE的时钟并等待其使能完成 */MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOE))){}/* 设置PE3作为AD的输入IO */MAP_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);

现在是关于AD的初始化

   /* 使能ADC0的时钟并等待其使能完毕 */MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_ADC0))){}/* 使能ADC0采样序列2通道3 */MAP_ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH3 | ADC_CTL_IE |ADC_CTL_END);/* 使能ADC0为定时器触发,当定时器触发后进行单次采样 */MAP_ADCSequenceConfigure(ADC0_BASE, 2, ADC_TRIGGER_TIMER, 2);/* 在使能之前清除中断状态标志位,这一步是为了确保中断标志位在我们采样时是保持清除状态 */MAP_ADCIntClearEx(ADC0_BASE, ADC_INT_DMA_SS2);MAP_ADCIntEnableEx(ADC0_BASE, ADC_INT_DMA_SS2);/* 使能ADC0采样序列2的DMA请求 */MAP_ADCSequenceDMAEnable(ADC0_BASE, 2);/* ADC0采样序列2的配置已经完成,现在进行使能 */MAP_ADCSequenceEnable(ADC0_BASE, 2);/* 使能ADC0采样序列2的中断 */MAP_IntEnable(INT_ADC0SS2);

最后是关于DMA的初始化

    /* 使能DMA并为其配置通道 */MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_UDMA))){}MAP_uDMAEnable();/* 指向控制表,用于通道控制结构 */MAP_uDMAControlBaseSet(pui8ControlTable);/* 映射ADC0通道2到DMA上 */MAP_uDMAChannelAssign(UDMA_CH16_ADC0_2);/* 配置DMA属性为已知状态,默认情况下为失能 */MAP_uDMAChannelAttributeDisable(UDMA_CH16_ADC0_2,UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |UDMA_ATTR_HIGH_PRIORITY |UDMA_ATTR_REQMASK);/* 为ADC0采样序列2的优先级控制结构体设置控制参数,优先级控制结构体是用来从ADC0采样序列2的FIFO中复制数据到数组srcBuffer,这个传输数据大小为16位,源地址不增加,目的地址16位步进 */MAP_uDMAChannelControlSet(UDMA_CH16_ADC0_2 | UDMA_PRI_SELECT,UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 |UDMA_ARB_4);/* 为ADC0采样序列2设置优先级控制结构体,模式为BASIC */MAP_uDMAChannelTransferSet(UDMA_CH16_ADC0_2 | UDMA_PRI_SELECT,UDMA_MODE_BASIC,(void *)&ADC0->SSFIFO2, (void *)&srcBuffer,sizeof(srcBuffer)/2);/* ADC0采样序列2的uDMA已经准备就绪,当通道使能后,定时器触发ADC采样,ADC完成采样之后发送一个DMA请求,之后数据传输就会开始 */MAP_uDMAChannelEnable(UDMA_CH16_ADC0_2);

MSP432E401Y学习笔记day1相关推荐

  1. MSP432E401Y学习笔记1

    MSP432E401Y学习笔记1 前言 一.开发环境的搭建 芯片包的下载 二.下载TI公司提供的SDK 三.新建工程 四.让我们一起点出个未来吧!!! 1.左侧的目录结构 2.几个函数的作用 烧录工程 ...

  2. ELK搜索学习笔记--Day1

    ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...

  3. HCIA学习笔记day1

    HCIA学习笔记day1 衡量网络优劣的几个标准: 带宽:在一段时间内,从一个点到另一个点的最大传输量 传输的数据量单位是比特 延迟:数据从一个点到达另一个点所经历的时间 200Mbps 单位是比特 ...

  4. MSP432E401Y学习笔记2-按键控制_查询

    MSP432E401Y学习笔记2-按键控制_查询 前言 一.原理图查看需要控制的IO 二.写代码 1.将点灯的工程拷贝一份 2.配置LED 2.mian文件 前言 今天通过按键控制LED灯的亮灭,按键 ...

  5. 【shaw学习笔记day1】Python21天+人工智能预科学习日记

    Python数据类型及字符串字节串转换+概率论复习 这里是shaw,用于记录技术学习笔记和各类干货分享: 为记录学习生活和激励成长,开始这个专栏,希望自己日后可以坚持,初心不变. Python21天 ...

  6. JavaSE学习笔记-Day1

    笔者是一名大二在读本科生,最近闲着无聊重拾起Java这门语言,看了些许教学视频后居然还觉得挺有意思,"情不知所起,一往而深".于是决心认真学习这门语言!由于身居科班,自然不是零基础 ...

  7. Mysql学习笔记day1 --三天学完mysql所有知识点

    Mysql 超全MySQL学习笔记,三天就可以学会熟练运用SQL语句,干货满满,文章末尾有相应的练习题,可以多练练加深印象,希望我的文章对你有所帮助 一.服务器 1.什么是服务器?用于提供共享资源文件 ...

  8. ZYNQ学习笔记------day1

    ZYNQ第一天学习笔记 1.Zynq-7000 All Programmable SoC ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统,它将处理器的软件可编程性与FPGA的硬件可编 ...

  9. python商业爬虫_商业爬虫学习笔记day1

    day1 一. HTTP 1.介绍: https://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html http://blog.csdn.ne ...

最新文章

  1. 如何检查变量的类型是否为字符串?
  2. Java延迟加载的最佳实践应用示例!
  3. 主线程和子线程的同步控制
  4. 入门linux经典书籍--linux从入门到精通
  5. jsp页面怎么调用的servlet
  6. CentOS下禁止防火墙
  7. ubuntu 15.04 系统中如何启用、禁用客人会话
  8. 陈彤:一个网络编辑的11年
  9. 使用信号灯法,标志位解决测试生产者消费者问题(源码解析、建议收藏)
  10. apollo本地启动调方式
  11. Android 提高 5 SurfaceView绘图容器的基本使用
  12. Eclipse SVN历史乱码问题
  13. caffe安装简易教程
  14. 网易电子邮箱的文档功能是什么?
  15. 继云计算巨头失火后,微软决定送数据中心去“泡澡”!
  16. 小程序二维码和带参数的二维码生成
  17. PS 剪切图片到指定大小
  18. react+mobx+jquery构建大型工具项目经验总结
  19. 【企业邮箱申请】网易企业邮箱陌生人来信安全提醒功能
  20. 项目经理start法则_开放科学项目的7条经验法则

热门文章

  1. android黑盒子调用,[原创]Android群控黑盒调用 - Sekiro食用手册
  2. 2019智能手表推荐_2019年,这4款智能手表已经秒杀Apple Watch!
  3. 销项发票采集工具需求分析及设计分享
  4. 区块链会员积分体系解决方案
  5. 计算语言学课程笔记(一)
  6. Selenium Chrome版本与chromedriver兼容版本对照表
  7. java的三层架构是什么_java中的三层架构
  8. CT三维重建及三维可视化资料:opengl+VTK+PCL点云库
  9. 225款飘逸的手写英文字体包 适合WIN/MAC系统通用
  10. 易语言保存txt记录至c盘,易语言超级列表框导入TXT文本后修改保存和新增记录...