0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32L476芯片来做个演示

茶话MCU 来源:ST MCU 信息交流 2019-11-20 14:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们在做SPI应用时,有时希望通过定时器定时地触发SPI的收发,并利用DMA完成数据的传输。这里,我基于STM32L476芯片来做个演示,以供参考【为什么选用32L476,其实没啥特别原因,只是顺手找了块Nucleo板】。

本示例的大致过程是这样的:

片内SPI1做Master,SPI2做Slave,均工作在全双工模式。

这里使用片内定时器TIM3,借助它的更新事件触发DMA请求,通过DMA将数据给到SPI1的数据寄存器并发送出去,同时也开启SPI1接收事件的DMA传输。SPI2的收、发事件都启用DMA传输来实现数据收发操作。

TIM3的更新时间控制两个SPI的收发节奏,即定时器每产生一次更新事件,SPI1/SPI2这两个主从通信模块就进行一个数据的收发。我们可以通过调整定时器的计时周期来调整数据收发的快慢节奏。

好,先基于STM32CubeMx进行初始化配置。

1、对TIM3做基本配置。选择时钟源,先大致估算个定时器计时周期,调试时我们可以自行灵活调整。

开启基于TIM3更新事件的DMA配置。传输方向是从Memory到外设SPI1,即将内存数据传输到SPI1的数据寄存器进行数据发送,这里选用循环模式。

2、对SPI1/SPI2进行基本配置。细节请参看下面三幅截图。

3、DMA的配置情况。

在TIM3和SPI1/SPI2外设配置中,开启了相关事件的DMA请求,汇总如下图。

4、准备用户代码。

当完成基于STM32CubeMx的初始化配置并生产初始化代码后,我们准备相应的用户代码。

这里准备了4个内存数组,分别存放SPI1/SPI2的收发数据。

在定时器的触发下,主SPI1逐字的向从SPI2发送“Hello! I AM STM32!”,从SPI2也逐字的向主SPI1回应“HI,MASTER,ME TOO!”,就这样循环操作。

下面两幅图是本示例中使用到的用户代码截图,是基于STM32Cube固件库而编写的。应该说简单明了,无须多做解释。

5、结果验证。

下面的截图是两个不同时刻SPI通信时的信号时序波形图。其中,紫色的是时钟信号,绿色、黄色是数据信号。两个数据信号间的间隔由定时器的更新周期决定。

下面的截图是在调试状态下的通过观察窗口得到的SPI1/SPI2分别从对方收到的内容。

最后小结下。整体上讲上述应用的实现不难,稍微有点综合性。

要实现上述应用,首先要求我们对DMA传输的原理有清晰的了解,触发事件,传输源、传输目标几个概念及关系要弄清楚。另外,即使我们基于STM32固件库开发,不一定能找到完完整整的现存代码,我们可能需要基于现有驱动代码自行组织用户程序。还有,在上面示例代码中,我没有开启DMA的中断事件,我们在具体应用中可以根据情况来决定是否启用DMA中断,比方开启传输完成中断等。顺便提醒下,这里我们基于定时器事件自行指定DMA的源端和目的端,‍一定要保证是该触发事件所请求的DMA可以到达的地方,编程设计前最好查看下相关芯片数据手册里的芯片模块及总线框架图。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    459105
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371155
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121743

原文标题:STM32定时器触发SPI逐字收发之应用示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32L476低功耗怎么做啊

    STM32L476低功耗怎么做啊
    发表于 11-11 16:48

    PM组件低功耗定时器动态补偿后,进入stop2无法唤醒怎么处理?

    版本5.1.0,采用STM32L476结合pm组件做低功耗管理,开启了低功耗定时器动态补偿时钟,但是发现发现一旦开启低功耗定时器补偿时钟,进入休眠后mcu就无法在被唤醒,尝试在io外部中断请求中
    发表于 09-10 07:24

    昂科烧录器支持ST意法半导体的超低功耗微控制器STM32L476RCT

    昂科技术作为芯片烧录领域的领导者,在其新版烧录软件发布之际,宣布扩展了兼容芯片型号列表。新增型号包含了意法半导体的超低功耗微控制器STM32L476RCT。目前,该芯片已获得昂科通用烧
    的头像 发表于 07-21 11:38 520次阅读
    昂科烧录器支持ST意法半导体的超低功耗微控制器<b class='flag-5'>STM32L476</b>RCT

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料免费下载
    发表于 06-06 17:06 9次下载

    基于STM32 人群定位、调速智能风扇设计(程序、设计报告、视频演示

    基于STM32 人群定位、调速智能风扇设计(程序、设计报告、视频演示),有需要的同学推荐下载!
    发表于 05-28 21:34

    基于stm32 nucleo_L476的智能灯(操作说明+源码)

    基于stm32 nucleo_L476的智能灯(操作说明+源码)推荐下载!
    发表于 05-28 21:29

    基于STM32 人群定位、调速智能风扇设计(程序、设计报告、视频演示

    基于STM32 人群定位、调速智能风扇设计(程序、设计报告、视频演示)项目下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 20:35

    STM32L476 Flash擦除失败的原因?

    开发板MCU型号:STM32L476RG 同样的固件在开发板中flash读写擦除操作都没问题,但在产品中擦除函数返回成功,但flash中的数据其实并没有擦除。 这两款MCU在Flash的操作上是否有什么不同?
    发表于 04-23 08:26

    STM32L431RCT6主芯片 搭配 SD NAND-动态心电图设备存储解决方案

    面、精准的诊断依据。然而,动态心电图设备在实际应用中面临诸多技术挑战,尤其是在数据存储、处理效率和功耗管理方面。本文将深入分析这些技术痛点,并阐述如何通过选用STM32L431RCT6主芯片和米客方德
    发表于 03-27 10:56

    配置STM32H7S3L8芯片时出现没有下载芯片包的报错,怎么解决?

    我在配置STM32H7S3L8芯片时出现报错,大致意思是讲我没有下载芯片包,但是实际我已经下载,我在公司使用了电脑却没有这个问题,我的笔记本出现了这个报错,我将附上笔记本配置图片以及IDE的问题图片,重点我已经重装
    发表于 03-13 08:02

    如何关闭STM32MP1 Developer Package开机默认的gtk演示程序?

    如题,如何关闭STM32MP1 Developer Package开机默认的gtk演示程序
    发表于 03-13 06:03

    STM32L476VGT6是否可以通过FMC直接驱动340X240的彩屏?

    STM32L476VGT6是否可以通过FMC直接驱动340X240的彩屏
    发表于 03-11 08:02

    使用STM32L476RCT6 HAL_FLASHEx_Erase()函数,擦除失败的原因?

    MCU型号: STM32L476RCT6 大家有用过 HAL_FLASHEx_Erase() 这个函数吗? 我根据官方例程写的代码,读写都能成功,但是擦除失败。调用擦除函数
    发表于 03-10 06:14

    STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替换到板子上吗?

    STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替换到板子上吗?为啥烧录程序时无法连接?
    发表于 03-07 08:10

    STM32L476RG数据手册

    电子发烧友网站提供《STM32L476RG数据手册.pdf》资料免费下载
    发表于 03-04 15:30 1次下载