单片机是如何从入门到放弃!

面包板社区 2023-03-06 20:03

第一步,做出实体芯片。


单片机一般理解为MCU(Microcontroller Unit,微控制单元),包含定时器、ALU(Arithmetic Logic Unit,算术逻辑单元)、内存、寄存器、总线等部分。而普通的意义的单片机还包含GPIO、串口(UART)、DMA、协处理器、AD\DA等等。

看懂如下图
前置:计算机组成原理,微机原理。

流水线

前置:数字逻辑电路,集成电路设计及其EDA技术,verilog把各个模块细分为寄存器级,比如移位运算器、节拍器、译码器、存储器等。

module minicpu(clk, reset, run, in, cs, pcout, irout, qtop, abus, dbus, out);
input clk,reset,run; input [15:0] in; output [1:0] cs; output [15:0] irout, qtop, dbus, out; output [11:0] pcout, abus; wire [15:0] qnext, ramout, aluout; reg [11:0] abus; reg halt, jump, pcinc, push, pop, thru, qthru, dbus2qtop, dbus2ram, dbus2obuf, ir2dbus, qtop2dbus, alu2dbus, ram2dbus, in2dbus; reg pop2, ir2abus, qtop2abus, qnext2abus; reg [11:0] pcout, pcnext; reg [15:0] out;
statef statef0(.clk(clk),.reset(reset),.run(run),.halt(halt),.cs(cs)); stackm stackm0(.clk(clk),.reset(reset),.load(dbus2qtop),.push(push),.pop(pop),.pop2(pop2),.thru(qthru),.d(dbus),.dthru(ramout),.qtop(qtop),.qnext(qnext)); alu alu0(.a(qtop),.b(qnext),.f(irout[4:0]),.s(aluout)); dpram #(16,10,1024) dpram0(.clk(clk),.load1(dbus2ram),.addr1(abus),.addr2(pcnext),.d1(dbus),.q1(ramout),.q2(irout));

物理上是这样的


然后会调试BUG,看时序。
前置:时序用MODELSIM,综合用QUARTUS II 等等

然后此时才刚刚开始。
继续生成电路网表,时序收敛,如果不对继续返回上述流程继续调试。
前置:Synopsys
回顾一下







此时应该生成版图文件,然后根据制造厂商提供的物理器件库进行最后的各种设计规则检查。

前置:集成电路版图设计,软件有Cadence:Virtuoso Layout Editor



送到代工厂,还要懂元器件
前置:半导体物理,半导体器件物理,固体物理,电介质物理,量子力学,热力学与数理统计。


根据得到的图表设计版图和工艺流程,大概是这样
前置:集成电路制造


然后进行电气测试,电磁测试,最后封装。
前置:集成电路封装技术




最后不能忘记出片的时候
焚香沐浴更衣,朝南拜三拜,祈祷不会有大问题。


第二步,设计系统驱动。

终于得到了物理上的片子
我们开始写汇编器,编译器。
本质上烧写进ROM的是这样的机器码。


汇编器(把汇编语言变成机器码)
前置:perl

#!/usr/bin/perl -W//*****************//print "*** LABEL LIST ***\n";foreach $l (sort(keys(%label))){ printf "%-8s%03X\n",$l,$label{$l};}
$addr=0;print "\n*** MACHINE PROGRAM ***\n";foreach (@source){ $line = $_; s/\w+://; if(/PUSHI\s+(-?\d+)/){ printf "%03X:%04X\t$line",$addr++,$MCODE{PUSHI}+($1&0xfff); } elsif(/(PUSH|POP|JMP|JZ|JNZ)\s+(\w+)/){ printf "%03X:%04X\t$line",$addr++,$MCODE{$1}+$label{$2}; }elsif(/(-?\d+)/){ printf "%03X:%04X\t$line",$addr++,$1&0xffff; } elsif(/([A-Z]+)/){ printf "%03X:%04X\t$line",$addr++,$MCODE{$1}; } else { print "\t\t$line"; }}

编译器 BISON和FLEX(把高级语言转换成汇编语言)
前置:编译原理

%{#include %}%union {char *s; int n;}%token NAME NUMBER%destructor { free($$); } NAME NUMBER%token IF WHILE DO%type if0%token GOTO ELSE INT IN OUT HALT......%%int yyerror(char *s){ printf("%s\n",s); }int main(){ yyparse(); }%{ #include #include "y.tab.h" int n=0;%}......while {yylval.n=++n;return(WHILE);}[0-9]+ {yylval.s=strdup(yytext);return(NUMBER);}[a-zA-Z][a-zA-Z0-9]* {yylval.s=strdup(yytext);return(NAME);}. {return(yytext[0]);}%%int yywrap(){ return(1);}

终于可以固化进ROM可以跑程序了,你还需要一段小型的开启代码(bootloader)
前置:汇编语言

%{#include %}%union {char *s; int n;}%token NAME NUMBER%destructor { free($$); } NAME NUMBER%token IF WHILE DO%type if0%token GOTO ELSE INT IN OUT HALT......%%int yyerror(char *s){ printf("%s\n",s); }int main(){ yyparse(); }%{#include #include "y.tab.h"int n=0;%}......while {yylval.n=++n;return(WHILE);}[0-9]+ {yylval.s=strdup(yytext);return(NUMBER);}[a-zA-Z][a-zA-Z0-9]* {yylval.s=strdup(yytext);return(NAME);}. {return(yytext[0]);}%%int yywrap(){ return(1);}

然后开始写操作系统
前置:ucos(嵌入式操作系统)

系统宏定义,系统功能配置,系统头文件,初始化文件,调度文件,任务管理文件
系统时间管理文件,信号量文件,邮箱文件,消息队列文件,内存管理文件,系统服务文件,MAIN文件。

写操作系统中的任务
前置:C语言,数据结构,算法导论。

start: JK startnopsdal 32sdah 0datploop: tinginltinginhjend cxcutenopjmp loopincexcute: call 32nopjmp startnop

拿着含辛茹苦的板子还需要配置最小系统以及外围器件
前置:PCB设计和制造,电焊等技艺,模电、高频电子线路,信号与系统




如果有信号传输
通讯协议
前置:SPI,I2C,CAN,TCP/IP、wifi等等

uint SPI_RW(uint uchar){uint bit_ctr;for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit { MOSI = (uchar & 0x80); // output 'uchar', MSB to MOSI uchar = (uchar << 1); // shift next bit into MSB.. SCK = 1; // Set SCK high.. uchar |= MISO; // capture current MISO bit SCK = 0; // ..then set SCK low again }return(uchar); // return read uchar}

RF天线

前置:微波技术,电磁场与电磁波,HFSS,天线技术等等。



以上回答来源:知乎,作者:彭谟威
链接:https://www.zhihu.com/question/28580074/answer/93515413

看完这位同学的回答,网友纷纷评论表示:

化学,光学,半导体物理,等等就光刻胶涂胶的方式就够你研究一辈子了


这是一个人的活吗?

没有一定水平干不了这些的,微电子专业,呵呵

然后再制造出通量电容,回到过去,干死自己

最后一张图是PCB layout还是IC的?

。。。看完我已经不想学单片机了。。手动再见


好吧,短短几分钟,经历了一遍《从入门到放弃》


  ︿( ̄︶ ̄)︿不能更详细。。。

其实,21ic论坛的一位道友曾经尝试过制作51单片机,接下来欣赏网友一路向北lm的制作过程:


设计的电路原理图如下(PDF文件及相关详细资料见点击下方“阅读原文”查看原帖):

PCB设计如下,双面板,10*10以内(打印比较便宜),3D图效果图如下:




板卡功能:


1. 板载8个LED  可做流水灯实验。
2. 板载4位一体数码管 可做数码管静态 动态显示实验。
3. 板载CH340下载芯片,可以通过USB实现一键下载。
4. 板载MAX232串口芯片,现在串口下载,串口通讯。
5. 板载继电器模块,可实现对大电流大电压的控制。
6. 板载蜂鸣器模块,可以作为相关应用的提示。
7. 板载1602液晶接口,可以实时显示相关字符数据。
8. 板载12864液晶接口,可以实时显示汉子字符数据。
9. 板载四颗独立按键,可以实现对一些功能的触发。
10. 板载NRF24L01 无线接口,实现无线传输。
11.所有IO口引出,方便调试。


几天后,拿到打印后的板子,红色很是喜庆哈。
     
马不停蹄的焊接,很累啊,这么多贴片测试的过程必然艰辛。


大功告成,一块板子横空出世,赶紧试试, 板子焊接完成正面图,还算可以。




LED、数码管、蜂鸣器、继电器一切OK,USB CH340 下载电路也OK,使用Max232 DB9串口下载也OK,液晶接口1602 12864 也可以正常显示,基本功能都一切正常这次打板还是比较成功的。趁着这股劲,一鼓作气,多焊机了几块板子,摆一排,成就感爆棚。


下面是测试功能的一些图,包括1602、12864与oled显示。

▲1602显示


▲12864显示


▲oled显示

声明:文章转自“网络,版权归作者所有。如有侵权,请联系我们删除!
END


免费申请开发板


🤞长按图片 扫码申请🤞

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 69浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 158浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 202浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 93浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 98浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 141浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 116浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 58浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 106浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 164浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 119浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 222浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 92浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 124浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 61浏览
我要评论
1