ARM-GPIO实验 一、GPIO General Purpose I/O Ports:通用输入/输出端口。 通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态(高电平或低电平)。 用户可以通过GPIO口==和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)==等。GPIO口的使用非常广泛。 二、ARM微处理器体系结构 SOC芯片 (System on Chip)片上系统/系统级芯片,它是一个产品,是一个有专用目标的集成电路,其中包含完整系统的全部内容。cpu核 + 外围控制器 德州仪器、高通、三星、全志、华为海思、联发科、瑞星薇 三、开发板介绍 适配器电压:输出电压5V 2A USB x 3(USB HOST1、USB HOST2、USB HOST3) 接从设备 USB OTG 多了一条线(主从识别),可以作为从机或主机。现在用的少,type-c比较多 Reset 没效果,线没接 拨码开关 调到从emmc启动 485/CAN总线 汽车上面,一般按这个按钮把门打开,把后备箱打开,所有汽车上面的控制、通讯一般都走的CAN总线。蓝色的端子可以卡线。 串口 x 4 通讯接口,方便插拔。公头、母头 一般来说多层开发板更好,避免拥挤,4层板比2层板贵2倍。2层开发板可能信号不稳定。层数越多稳定性越好。核心开发板质量要求是特别高的。 四、硬件原理图 先原理图设计,后PCB印刷电路板(Printed Circuit Board)设计 芯片手册(DataSheet) 电阻 拉电阻(上拉电阻/下拉电阻) 上拉(Pull Up)或下拉(Pull Down)电阻(两者统称为“拉电阻”)最基本的作用是:将状态不确定的信号线通过一个电阻将其箝(qián)位至高电平(上拉)或低电平(下拉) 判断上拉电阻和下拉电阻 上拉电阻将电平拉高,一般接VCC接入电路电压;下拉电阻将电平拉低,一般接GND(Ground)接地。 高低电平 一个相对的概念。逻辑上表示高电平为1,低电平为0,通不通电跟高低电平无关。 根据不同的协议标准,高低电平定义的电压值范围是不一样的。(高:3.5 ~ 5V 低:0~0.25V) 一般情况下,电压越低,速度越快,能耗越低,但是抗干扰能力也越差。 二极管 P:Positive正极 N:Negative负极 概念 二极管具有单向导电性能,导通时电流方向是由阳极通过二极管流向阴极。 结构组成 二极管由一个PN结加上相应的电极引线及管壳封装而成的 电流流向 二极管有两个电极,由P区引出的电极是正极,又叫阳极 由N区引出的电极是负极,又叫阴极 三角箭头方向表示正向电流的方向,二极管的文字符号用VD表示 三极管 概念 三极管全称是“晶体三极管”,也被称作“晶体管”,是一种具有放大功能的半导体器件 结构组成 基极(激活晶体管) 集电极(三极管的正极,收集电荷载体) 发射极(三极管的负极,发射电荷载体) 三极管分类 根据结构 NPN型三极管 PNP型三极管 根据功率 小功率三极管 中功率三极管 大功率三极管 根据工作频率 低频三极管 高频三极管 根据封装形式 金属封装型三极管 塑料封装型三极管 根据PN结材料 锗三极管 硅三极管 三极管工作原理 PNP型 PNP是一种BJT(Bipolar Junction Transistor 双极性结型晶体管),其中一种N型材料被引入或放置在两种P型材料之间。在这样的配置中,设备将控制电流的流动。PNP晶体管由2个串联的晶体二极管组成。二极管的左侧和右侧分别称为集电极-基极二极管和发射极-基极二极管。 三极管符号箭头从发射极E指向基极B 开关特性 基极B为低电平的时候,集电极C和发射极E导通 NPN型 NPN中有一种 P型材料存在于两种 N型材料之间。NPN晶体管基本上用于将弱信号放大为强信号。在 NPN 晶体管中,电子从发射极区移动到集电极区,从而在晶体管中形成电流。这种晶体管在电路中被广泛使用。 三极管符号箭头从基极B指向发射极E 开关特性 基极B为高电平的时候,集电极C和发射极E导通 三极管3种工作状态 截止状态(没打开的水龙头) 三极管发射结反偏,集电结反偏,三极管就会进入截止状态 放大状态(水龙头开大一点) 三极管发射结正偏,集电结反偏,三极管就会进入放大状态 饱和状态(水龙头开到最大) 三极管发射结正偏,集电结正偏,三极管工作在饱和状态 电源 DC33V(直流电压33V)DC:Direct Current 接地 五、ARM接口编程的六个步骤 1、确定外设设备 2、在开发板通过外设,找到对应的丝印(名称标号) 3、通过丝印在开发板找到对应的外设版原理图 4、通过原理图分析电路,并找到对应的芯片的引脚 5、通过引脚在核心板原理图找到对应的地址 6、通读对应的章节去配置地址 CPU控制GPIO流程 栈空间起始地址0x4000 0000,由于是满栈递减,这里偏移1M大小的空间,所以是0x4010 0000 2^10 = 1KB、2^20 = 1MB、2^30 = 1GB 1 << 30 0x1000 0000 => 1 * 2^28 (1 << 28) 2^30 = 4 * 2 ^ 28 => 0x4000 0000 (1G) 1MB = 2 ^ 20 ==> 0x10 0000 ARM-LED灯实验 ARM-Key按键实验 ARM-PWM蜂鸣器实验 ARM-UART串口通信实验 ARM-ADC实验 ARM-IIC通信实验