stm32mp1 Cortex M4开发篇10:扩展板数码管控制

写在前面:

本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器、LED灯、数码管、蜂鸣器、震动马达、按键中断、风扇等),本篇是M4控制资源扩展板中的一篇。

资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种助主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提供所有项目的说明文档、实验源码、应用程序等资料。

针对FS-MP1A开发板,除了Cortex-M4裸机开发篇外,还包括其他多系列教程,包括Cortex-A7开发篇、FreeRTOS篇、Linux基础及应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。欢迎关注,更多stm32mp157开发教程及视频,可加技术交流Q群459754978,感谢关注。

FS-MP1A开发板详情介绍:淘宝网 - 淘!我喜欢

目录

1.资源扩展板介绍

1.1硬件介绍

1.2资源扩展板可开发项目

2. 扩展板数码管控制

2.1.实验原理

2.3. 实验环境

2.4. 实验步骤


1.资源扩展板介绍

1.1硬件介绍

1.2资源扩展板可开发项目

2. 扩展板数码管控制

2.1.实验原理

打开扩展板原理图对照扩展板可以看到扩展板上四位数码管原理图如下:

由图中可以确定数码管为共阴极数码管,DS_A、DS_B、DS_C、DS_D、DS_E、DS_F、DS_G、DS_DP分别对应数码管的每个段,对应管脚为高电平时对应的部位会被电量,因为只有一组数据信号,但是有四个数码管,所以需要通过控制DS_G1、DS_G2、DS_G3和DS_G4选择某个数码管显示内容,然后通过轮询刷新让四个数码管正常显示。

M74HC595是一个传入并出的移位寄存器,如果有多个芯片级联也可串行输出控制下一级芯片,QA~QH为并行输出,QH’为串行输出;如果本例四个LED数码管由两个M74HC595控制,第一级控制数码管显示什么,第二级控制哪个数码管显示。

根据上述描述在编写驱动是可以通过GPIO模拟74HC595的时钟完成控制,因为74H595时序和SPI时序兼容,所以也可通过SPI控制器控制74HC595。

74H595部分时序

SPI时序(CPHA=0 CPOL=0)

扩展板与底板接口对照图

查看芯片手册,管脚对应关系如下:

2.2. 实验目的

了解M74HC595移位寄存器

学习SPI协议的使用方法,掌握如何利用STM32MP157A芯片控制显示数码管

2.3. 实验环境

FS-MP1A开发平台

ST-Link仿真器

STM32CubeIDE开发软件

PC机 XP、Window7/10 (32/64bit)

2.4. 实验步骤

打开STM32CubeIDE,配置CubeMX。

根据21.1节,使用的是SPI默认引脚,分别对PE11、PE12、PE13和PE14配置为SPI_NSS、SPI_SCK、SPI_MISO和SPI_MOSI。切换到SPI4标签,勾选为“M4”,“Mode”选择“Full-Duplex-Master”,使用硬件片选,选择“Hardware NSS Output Signal”,其配置如下图所示。

上述为新建工程配置过程,可参考12.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料\02-程序源码\ARM体系结构与接口技术\Cortex-M4\9_EX_SPI_NUMBER】

代码设计

本次使用的是硬件SPI,就不需要自己写程序实现SPI时序,需要做的仅仅是调用HAL提供的SPI硬件操作函数,其中,调用“HAL_SPI_Transmit”函数实现主机向从机发送数据,创建driver_sm74hc.c文件,在文件中实现数码管的控制代码如下。

void M74HC595_ReadDataTest(void)

{

rw_595_Register(0X02,0X66);

HAL_Delay(1);

rw_595_Register(0X04,0X07);

HAL_Delay(1);

}

uint8_t rw_595_Register(uint8_t reg,uint8_t data)

{

uint8_t txdata[2] = {reg, data};

if(HAL_SPI_Transmit(&hspi4, txdata ,2,300) != HAL_OK)

{

Error_Handler();

}

return 0;

}

其中,参数“reg”表示第几个数码管显示,参数“data”表示数码管显示的内容。

在主函数中循环调用“rw_595_Register”函数即可以实现在数码管上显示特定内容,实验结果如图所示。

硬件平台:华清远见FS-MP1A开发板(STM32MP157)

部分开发教程下载:加QQ群459754978,群文件里有。

部分视频课程收看:华清远见研发中心的个人空间_哔哩哔哩_Bilibili

淘宝购买链接:华清远见stm32mp157 linux开发板stm32单片机arm开发嵌入式学习板

手机淘宝分享码:复制本行文字打开手淘₤T4FPXn3YYJ2₤

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值