STM32
直播中

张燕

7年用户 1318经验值
私信 关注
[问答]

如何用stm32cubemx去设计一个完整的硬件系统呢

如何用STM32cubemx去设计一个完整的硬件系统呢?要经过哪几个步骤呢?

回帖(1)

h1654155275.5741

2021-12-14 15:06:01
在开始设计软件功能之前,我们需要先规划好硬件架构,完成需要的功能设计,同时给软件开发提供一个调试环境和对象,验证软件设计的功能是否满足需求,运行是否正确,是否符合我们的预期结果。

  万丈高楼平地起,设计一个完整的硬件系统,一般要经过以下几个步骤:


  • 第一步就是要列出需要的软件功能模块
  • 然后根据功能来分配硬件的IO连接
  • 完成外围模块的电路设计
  • 最后进行PCB设计。

  在STopen开源平台上,我们计划提供如下功能:


  • 系统时钟:高速时钟8Mhz,低速时钟32KHz。
  • 电池备份,断电保持RTC时钟运行
  • JTAG
  • 4线SDIO 的SD卡
  • MCU接口的16bits TFT LCD屏
  • SPI存储器
  • 一个调试UART,一个输出UART
  • 一个CAN
  • 一路I2C
  • 一个FULL speed USB device
  • 五路PWM
  • 2路ADC
  • 2路DAC
  • 2路PWM捕获
  • 6个按键
  • 8路输入IO
  • 8路输出IO
    面对如此众多的功能和IO需要分配,如果采用传统的方法来设计,是非常劳心劳力的,而且很容易出错,估计大家一开始看到都脑瓜子疼。
    非常高兴的是ST公司提供了一个设计工具stm32cubemx来辅助我们进行设计工作,这可以大大的减少我们的设计工作量,同时不会发生错误。该软件的使用操作请参考其他相关文档,在此不具体讲解。
    工具是帮助我们提高设计效率和避免错误的,并不能代替我们的工作,所以在使用这个工具的时候,我们如何来安排计划的功能所对应的IO引脚,也需要一些设计技巧。
    我们首先要明白和理解一个重要的功能,ST芯片的IO绝大多数是可以进行重映射的,比如一个UART1它的管脚是可以变化的,并不是固定不变的。这一点和传统MCU的是有巨大区别的,好处是我们更容易根据布线的方便调整位置,同时提高IO的利用率,最大化的使用这些IO来达成我们的目标。但是也有一些引脚是不可以重映射的,比如JTAG,USB,OSC等。
    在设计一个系统之前,我们要先大概了解一下这个芯片的哪些IO资源可以重映射,哪些是固定的,这样我们设计的时候就可以按照先不变,再可变的顺序来合理安排IO。
    一般来说,芯片的UART,I2C,SPI,PWM,ADC,DAC等这些常规资源的IO都是可以重新映射,或者有多个选择,当和其他IO发生冲突的时候,我们可以几选一的方式来避开冲突,比如它有好几个spi输出,我们只需要其中一个,那么就可以根据IO的使用和冲突情况来选择任意一路就可以满足我们的需求。

  根据经验和这些特征,我们IO分配的先后顺序如下,能事半功倍:


  • 先安排具有唯一性的资源(如OSC,BATbackup,USB,SD卡,LCD,JTAG),因为你没得选。
  • 再安排选择性比较小的资源,比如UART,SPI,I2C等
  • 然后安排可以多选一的资源,比如ADC,DAC,PWM等
  • 最后安排一般IO。
    在分配2-4类型的可变IO资源的时候,要考虑你的PCB布局,以后PCB设计从那一边出线,对应的功能引脚就安排到那一边,以就近,顺序的原则安排IO,方便和简化PCB设计,同时能提供好的设计信号回路,保证系统稳定性。
    在后期实际PCB设计过程中,我们根据走线的难易程度可以再次局部调整和重新分配信号IO,来达到最优的PCB布局和设计。
    下图是我们根据以上原则完成的IO分配设计图:








举报

更多回帖

发帖
×
20
完善资料,
赚取积分