STopen硬件设计1-如何高效的分配STM32F103的IO

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

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

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

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

  1. 系统时钟:高速时钟8Mhz,低速时钟32KHz。
  2. 电池备份,断电保持RTC时钟运行
  3. JTAG
  4. 4线SDIO 的SD卡
  5. MCU接口的16bits TFT LCD屏
  6. SPI存储器
  7. 一个调试UART,一个输出UART
  8. 一个CAN
  9. 一路I2C
  10. 一个FULL speed USB device
  11. 五路PWM
  12. 2路ADC
  13. 2路DAC
  14. 2路PWM捕获
  15. 6个按键
  16. 8路输入IO
  17. 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分配的先后顺序如下,能事半功倍:

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

在这里插入图片描述
在这里插入图片描述
下一章预告:原理图设计第一步,如何设计一个最小系统?

原创文章,欢迎转载,请注明来源,未经书面允许,请勿用于商业用途。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值