软硬兼修讲解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 )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
RT-Thread物联网操作系统发布v4.0版本

在业界拥有深厚技术积累的物联网操作系统RT-Thread平台暨上海睿赛德电子科技有限公司,于今日在北京召开主题为“开发,从未如此简单”的新品发布会,推出新一代RT-Thread 4.0版本IoT OS,同时公布了其在开发者生态社区和合作伙伴拓展方面取得的丰硕成果。

Manz亚智科技与中国本土具有重要影响力的华润微电子

2018年10月17日,中国苏州 – 全球高科技设备制造商Manz亚智科技将于10月24日至26日参加第十九届台湾电路板产业国际展览会(TPCA Show2018),展示湿制程解决方案实力,为客户提供跨领域设备整合服务。

PCB设计工程师不得不知的法则

尽管目前半导体集成度越来越高,许多应用也都有随时可用的片上系统,同时许多功能强大且开箱即用的开发板也越来越可轻松获取,但许多使用案例中电子产品的应用仍然需要使用定制PCB。在一次性开发当中,即使一个普通的PCB都能发挥非常重要的作用。

印刷电路板上被动组件的隐藏行为和特性

传统上,EMC一直被视为「黑色魔术(black magic)」。其实,EMC是可以藉由数学公式来理解的。不过,纵使有数学分析方法可以利用,但那些数学方程式对实际的EMC电路设计而言,仍然太过复杂了。幸运的是,在大多数的实务工作中,工程师并不需要完全理解那些复杂的数学公式和存在于EMC规范中的学理依据

贴片元件尺寸的影响(内附参考标准)

对于PCB设计工程师而言,他(她)的元件焊盘是依据元件制造商的规格参数来定的,而不同的元件制造商在按 相同的规格参数生产同样封装的元件,但是不同的元件制造商生产的同样封装元件的几何尺寸却可能存在较大的 区别。

更多资讯
各类阻水、防水型数字电缆应用简介

本文主要介绍了目前综合布线市场上使用比较多的各类阻水、防水型数字电缆,并简单阐述了该类产品的工艺设计、电气性能特点和生产过程中关键制造技术的控制。

知道这些测试术语,你才敢真的说懂PCB

提交验收的产品尚未经受任何条件处理,在正常大气条件下机械试验时阿状态

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

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

8月份北美PCB行业继续增长

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

PCB常见的三种钻孔:通孔、盲孔、埋孔

我们先来介绍下PCB中常见的钻孔:通孔、盲孔、埋孔。这三种孔的含义以及特点。

Moore8直播课堂