MSP432E401Y学习笔记day1

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);

  • 10
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: MSP432E401Y是一款高性能的低功耗微控制器,适用于各种嵌入式应用。学习MSP432E401Y可以使我们了解到如何开发和设计各种应用程序。 首先,我们可以学习MSP432E401Y的架构和硬件功能。该微控制器具有强大的处理能力和多种接口,包括串口、SPI、I2C和GPIO,可以与其他外部设备进行通信。此外,它还具有LCD控制器和触摸屏接口,方便我们与用户界面进行交互。 其次,我们可以学习如何使用MSP432E401Y进行编程。它支持多种编程语言,如C和汇编语言,并提供了丰富的软件开发工具和库,如代码编辑器、编译器和调试器。通过学习如何编写代码并调试程序,我们可以实现各种功能,如控制外部设备、处理数据和实现算法。 另外,学习MSP432E401Y还可以了解到如何进行电源管理和低功耗设计。它具有多种节能模式,可以根据应用需求进行灵活配置,从而延长电池寿命和降低功耗。此外,它还支持外部功耗管理接口,可以与其他电源管理器件进行通信,实现更高效的功耗管理。 最后,通过学习MSP432E401Y的应用案例和开发方案,我们可以掌握如何将它应用于实际项目中。无论是物联网、智能家居还是工业自动化,MSP432E401Y都可以为我们提供强大且可靠的解决方案。 总之,学习MSP432E401Y可以让我们掌握嵌入式系统设计和开发领域的知识和技能,为我们未来的职业发展和创新提供了基础。 ### 回答2: MSP432E401Y是一款现代微控制器,由德州仪器(Texas Instruments)公司设计和生产。它基于Cortex-M4内核,并具备低功耗特性。那么,如何进行MSP432E401Y学习呢? 首先,要深入了解MSP432E401Y的硬件特性和技术规格。可以查阅官方文档和技术手册,并关注官方社区和论坛,以便获取更多有关该微控制器的信息。 其次,熟悉MSP432E401Y的软件开发环境。Texas Instruments提供了MSP432软件开发工具包(SDK)和集成开发环境(IDE)。学习使用这些工具,编写、调试和测试MSP432E401Y的应用程序。可以通过阅读相关文档和教程,动手实践来提高自己的技能。 与此同时,可以尝试各种不同的实际应用场景。可以选择一些简单的项目,并逐步增加复杂度。通过实践深入了解如何使用MSP432E401Y来解决不同类型的问题。 此外,参与社区和论坛活动也是学习MSP432E401Y的好方式。与其他开发者分享经验和知识,提出问题并讨论解决方案。 最后,不断学习并保持热情。MSP432E401Y是一款功能强大且灵活的微控制器,但要掌握它需要持续的学习和实践。通过不断挑战自己,研究新的应用和技术,可以不断提升自己的技能水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值