软硬兼修讲解STM32从原理图PCB到移植RTOS

2018-10-10 13:16:41 来源:硬件十万个为什么
标签:
PCB   RTOS

 

关于为什么我们软硬件都要懂?

2010年,我在华为时,暂时脱产去参与招聘工作;为了为本部门招聘更多的人,争夺HC号(招聘入职的名额),所以非常卖力的希望每个来面试的,符合硬杠杠的面试者都能通过层层面试。
华为是如何研发的(21)——面试

 

因为华为招聘的时候,低级别招聘时有很多硬性条件,比如:学校要满足要求、不能频繁跳槽、不能有留级、复读;要过技术面试、集体面试、心理测评,最终送给终面官做终面;然后送人力资源审核,总部审核。

 

我们招聘锻炼干部,为了完成招聘任务,都是技面放水、集面指导、心理测评暗示;拼命把 学校满足要求的人送到终面。

 

有次在青岛的时候,当天通过面试的人很少。终于逮到一个学校勉强满足要求的面试者,技术有点烂。我们一路放水。最终把他送到部门老大那里做终面。

 

结果,没过一会部门老大出来跟我说:“让他走……”。

 

我把哪位来面试的小伙子送走了之后,问老大:“刚刚那个硬性条件都满足要求哎,为啥不要啊?”

 

 

老大叼根烟,跟我说:“一个搞单片机的,搞三年了的,只会画电路,不会写代码。。。一是学习能力弱、二是不好学、三是现有技能基础太弱。我们招聘过来虽然是来也只是画电路的,但是电路复杂度比简单的单片机系统复杂得多。一个只能画MCU电路的,都不知道学习代码,得弱到什么程度。不要不要!”

 

我当时不理解,觉得领导挑人随心情,不体恤我们这些招聘的锻炼干部的辛苦。过第二天到了济南,老大跟我说:“这些人招聘进来,都是要给你做下属的,如果很难带出来,也是给你自己找麻烦。”

 

不过现在想来,觉得不无道理。

 

前期经典文章软硬兼修

我们通过这篇文章,从芯片内部原理、电路设计、软件开发、软件运行,全流程看一下GPIO初始化、工作的全过程。帮助很多朋友只做MCU硬件的,又很想提升的朋友,进行学习和理解。

 

【1、熟悉芯片的内部结构和工作原理】

任何开发,我们都应该去看厂家的Datasheet和设计参考先,其他的教材、文档、书籍、网站、博客,都是基于原厂的资料进行编辑的。

 

所以我们应该下载并仔细阅读下面两个文档:

 

 

https://www.st.com/resource/en/datasheet/cd00191185.pdf

 

 

http://www.st.com/stonline/products/literature/rm/13902.pdf

 

上面两个链接可以复制到电脑进行下载。

 

也可以在硬十的论坛的iBox专题进行下载:

http://www.hw100k.com/forum.php?mod=viewthread&tid=3511&extra=

 

STM32实物图:


 

STM32的144个管脚,除了为芯片供电的电源、GND、时钟、复位管脚之外,几乎所有管脚都可以用作GPIO

 

2. STM32,LQFP144PIN的引脚分布图:

 


STM32F103ZET6:共144个引脚,7组IO口,每组16个IO口

7*16=112个IO口(这7组IO口分别为GPIOA,GPIOB…GPIOG)
例如:PGIOA包含PA0,PA1,PA2…PA15,每组16个IO口。
从硬件上面,按照:A、B、C、D、E、F、G分为7组。

 

每组有16个管脚。

 

IO口的基本结构和工作方式

 


stm32的GPIO的配置模式有好几种,包括:

 4种输入模式
   输入浮空
   输入上拉
   输入下拉
   模拟输入
 4种输出模式
   开漏输出
   开漏复用功能
   推挽输出
   推挽复用功能

 可配置3种最大翻转速度
   2MHz
   10MHz
   50MHz


1、模拟输入;

部分管脚可以用作ADC的输入管脚,需要通过软件进行配置。

当我们把对应的GPIO配置成ADC的功能。

 

 

则信号接到GPIO的管脚,会被MCU内部集成的ADC进行检测。

 

 

从上图我们可以看到,我觉得模拟输入最重要的一点就是,他不经过输入数据寄存器,所以我们无法通过读取输入数据寄存器来获取模拟输入的值,我觉得这一点也是很好理解的,因为输入数据寄存器中存放的不是0就是1,而模拟输入信号不符合这一要求,所以自然不能放进输入数据寄存器。该输入模式,使我们可以获得外部的模拟信号。

 

 

如果信号不作为模拟信号输入,可以作为数字信号输入。

 

数字信号输入时,可以配置上下拉电阻:高阻状态、无上下拉,为浮空输入。

 

上拉电阻打开,则为上拉输入、如果下拉电阻打开,则为下拉输入。

 

  

 

上拉和下拉部分均为关闭状态(AD转换-模拟量转换为数字量)
施密特触发器为截止状态
通过模拟输入通道输入到CPU
IO口外部电压为模拟量(电压形式非电平形式),作为模拟输入范围一般为0~3.3V

 

2、 浮空输入;

 

 

该输入状态,我的理解是,它的输入完全由外部决定,我觉得在数据通信中应该可以使用该模式。应为在数据通信中,我们直观的理解就是线路两端连接着发送端和接收断,他们都需要准确获取对方的信号电平,不需要外界的干预。所以我觉得这种情况适合浮空输入。比如我们熟悉的I2C通信的输入状态。

 

 

1)外部通过IO口输入电平,外部电平通过上下拉部分(浮空模式下都关闭,既无上拉也无下拉电阻)
2)传输到施密特触发器(此时施密特触发器为打开状态)
3)继续传输到输入数据寄存器IDR
4)CPU通过读输入数据寄存器IDR实现读取外部输入电平值。在输入浮空模式下可以读取外部输入电平


3、上拉输入;

上拉输入就是在输入电路上使用了上拉电阻。这种模式的好处在于我们什么都不输入时,由于内部上拉电阻的原因,我们的处理器会觉得我们输入了高电平,这就避免了不确定的输入。这在要求输入电平只要高低两种电平的情况下是很有用的。

 

 

 

和输入浮空模式相比较,不同之处在于内部有一个上拉电阻连接到VDD(输入上拉模式下,上拉电阻开关接通,阻值约30-50K)
外部输入通过上拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取。

 


4、下拉输入;

和上拉输入类似,不过下拉输入时,在外部没有输入时,我们的处理器会觉得我们输入了低电平。

 

 

  

和输入浮空模式相比较,不同之处在于内部有一个下拉电阻连接到VSS(输入下拉模式下,下拉电阻开关接通,阻值约30-50K)
外部输入通过下拉电阻,施密特触发器存入输入数据寄存器IDR,被CPU读取


5、开漏输出;

开漏输出,输出端相当于三极管的集电极,所以适合与做电流驱动的应用。要得到高电平,需要上拉电阻才可以。(例如模拟软件实现I2C的输出)

 

 

  

 

1,CPU写入位设置/清楚寄存器BSRR,映射到输出数据寄存器ODR
2,联通到输出控制电路(也就是ODR的电平)
3,ODR电平通过输出控制电路进入N-MOS管
  -ODR输出1:
   

N-MOS截止,IO端口电平不会由ODR输出决定,而由外部上拉/下拉决定。
 

在输出状态下,输出的电平可以被读取,数据存入输入数据寄存器,由CPU读取,实现CPU读取输出电平。
 

所以,当N-MOS截止时,如果读取到输出电平为1,不一定是我们输出的1,有可能是外部上拉产生的1。


 

-ODR输出0:
  

N-MOS开启,IO端口电平被N-MOS管拉倒VSS,使IO输出低电平。
  

此时输出的低电平同样可以被CPU读取到。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
IPC报告显示10月份北美PCB销售量增速缓慢

IPC — 国际电子工业联接协会® 上周发布了《2018年10月份北美地区PCB行业调研统计报告》。报告显示10月份北美PCB订单量和出货量同比继续增长, 订单出货比维持在1.04。

PCB布局布线的10条规则

遵照“先大后小,先难后易”的布置原则,即重要的单元电路、核心元器件应当优先布局.

五大技巧搞定从PCB原理图传递到版图设计

通过网表文件将原理图传递到版图环境的过程中还会传递器件信息、网表、版图信息和初始的走线宽度设置。

WAGO,一件接线端子产品中体现的匠人精神
WAGO,一件接线端子产品中体现的匠人精神

在电子产品和终端设备的整个生命周期中,任何一个组成器件的质量都将影响整个系统的性能、可靠性、稳定性和寿命,接线端子就是其中之一,而在接线端子领域,WAGO是个不可被忽视的名字。

移相控制的多路输出降压变换器提升EMI性能的PCB布局优化

电源设计工程师通常在汽车系统中使用一些DC/DC降压变换器来为多个电源轨提供支持。然而,在选择这些类型的降压转换器时需要考虑几个因素。

更多资讯
方正科技助力中国高端PCB产业发展

2018年12月5日,全球最具影响力及代表性之一的线路及电子组装展览会 -- 2018国际线路板及电子组装华南展览会在深圳会展中心开幕。方正科技集团股份有限公司(以下简称“方正科技”)旗下方正PCB参展并展示印制电路板业务和智能制造领域的优质产品。

集成运放中相位补偿的具体应用

相位控制:在供电电压全周或半周内,使电流开始流通的瞬时起变化的过程。在此过程中电流通过零值左右就停止。通过控制触发脉冲的相位来控制直流输出电压大小,简称相控方式。例如:可控整流电路中,调节触发信号触发角a,可控制输出电压Ud的大小。对应的还有斩波控制、SPWM控制。

PCB设计时应该注意的148个检查项目

本文总结了PCB设计时应该注意的148个检查项目,希望对您的学习有所帮助。

EDA画图函数的数据类型分析

Step1:导入数据并了解数据轮廓 查看各个特征的基本数据类型并且计算哪些特征缺失值比较多。 将特征的数据类型分为数值型和离散型两大类。

与时钟(clock)相关的PCB设计考虑

今天我们讲一下与时钟(clock)相关的PCB的设计考虑,主要分两部分:原理图设计 - 针对时钟电路应该放置哪些器件?以及PCB布局和走线 - 如何摆放与时钟相关的元器件并正确连线达到理想的性能。

Moore8直播课堂