
单片机
文章平均质量分 73
HMJ_
生命不止,学习不息。
展开
-
ESP32使用Arduino读写SD卡
esp32屏幕包含一个sd卡接口,通过SPI线连接,需要对插入改SD接口中的TF卡进行读写,通过arduino平台实现。在Master模式下,SPID。原创 2023-08-28 15:51:16 · 1259 阅读 · 0 评论 -
液晶屏接口介绍:8080接口详述,其他常用接口简介
其中有数据线,时钟线,和 水平/垂直 同步信号线。(HS, VS这2个信号,笔者多年前搞过模拟视频传输,对这2个行场同步信号好熟悉的感觉。Vsync(VS)指示一整屏像素帧的开始Hsync(HS)指示一个水平行像素数据的开始。转载 2023-02-20 14:24:40 · 9026 阅读 · 0 评论 -
单片机main函数在中断函数里执行?
这个问题,关键点就是:复位中断(Reset_Handler)和普通中断(SysTick_Handler)的操作模式不一样。其他IDE,比如Keil、GCC等编译环境道理类似,这个问题主要在于内核,也就是由内核决定。转载 2022-10-31 09:54:51 · 929 阅读 · 0 评论 -
P通道MOSFET简介
A P-Channel MOSFET is a type of MOSFET in which the channel of the MOSFET is composed of a majority of holes as current carriers. When the MOSFET is activated and is on, the majority of the current flowing are holes moving through the channels.This is in c转载 2022-07-29 12:21:33 · 1928 阅读 · 0 评论 -
GB2132转UTF-8
背景单片机端常用的中文显示字符集是GB2312, 相对于UTF-8表示中文时更节省空间, 但是Linux端为了通用及兼容性常采用UTF-8作为字符编码, 为了保持编码的的统一, 网络通信时单片机内部将GB2312转为UTF-8发送给Linux, 于是就有了这个动机;编码介绍GB2312GB/T 2312,GB/T 2312–80 或 GB/T 2312–1980 是中华人民共和国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,通常简称GB(“国标”汉语拼音首字母),又称GB0。G原创 2022-05-12 17:14:55 · 5374 阅读 · 1 评论 -
I2C总线及总线阻塞
这个问题以前还真遇到过但是没有仔细分析过原因,这次被问到这个问题傻了,看到网上的一些相关文档后,整理了这篇文章,主要分析产生原因和解决办法。首先还是看看I2C相关的一些步骤的总线状态:死锁总线表现为:SCL为高,SDA一直为低;slave:正常时序下:SDA信号是在SCL为低的状态下改变,即从应答SDA为低电平时,此时SCL应为为低电平;master:SDA被从拉低,故master认为i2c总线占用,一直等待SDA变高;原因:当master正在和slave通信,如果master正好发生打算转载 2022-01-25 11:18:05 · 1977 阅读 · 0 评论 -
qmc5883p芯片坐标系方向定义
问题最近一个项目用到qmc5883p, 然而确定磁力计方向的时候发现datasheet上写的不是很清楚, 并且example中还有一个设置方向的一步, 于是测试了芯片坐标方向并记录了下来; 该芯片和qmc5883L方向并不一致;结果qmc5883P的datasheet给出来如下说明, Y为笔者添加的;但是这个方向是按照datasheet的example设置的结果: //Define the sign for X Y and Z axis qmc5883p_write_reg(0x2原创 2022-01-07 10:47:34 · 2600 阅读 · 4 评论 -
ARM FPU 加速浮点计算 介绍
引言笔者接触嵌入式领域软件开发以来,几乎用的都是 ARM Cortex M 内核系列的微控制器。感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和CPU之美,所以决定周末无聊的休息时间通过寻找资料、动手实验、得出结论的方法来探索 ARM CPU 架构的美妙,以及C语言编译器的奥秘。(因为我个人实在是不赞同学校中微机原理类课程的教学方法)。 ARM探索之旅 01 | 带你认识ARM Cortex-M阵营 ARM探索之旅 02 | AR..转载 2021-12-22 09:40:13 · 2090 阅读 · 0 评论 -
树莓派获取MPU6050数据
背景使用手头的树莓派获取mpu6050模块的6轴传感器数据,用于计算设备的欧拉角来预估设备的状态;代码实现#!/usr/bin/python3import smbusimport mathimport timeimport numpy as np# chip addr definempu_addr = 0x68 # This is the mpu_addr value read via the i2cdetect commandmpu_acc_range = 2原创 2021-12-18 12:29:58 · 1276 阅读 · 0 评论 -
Python Smbus库简介
背景手头有个树莓派,又有个I2C通信的模块,因此想要用树莓派调一下这个模块,于是找了下树莓派控制模块的文章,发现都是从smbus的read byte封装的,可是按照I2C协议一次肯定可以读多个数据,于是想找库函数文档看下,发现Py官网文档上smbus库没有函数描述,但找到了语法与其相同的smbus2库, 于是记录下库函数用法。不过找到了smbus的源码, 源码中有函数接口。结果smbus支持的函数列表:static PyMethodDef SMBus_methods[] = { {"open",原创 2021-12-16 11:19:45 · 9471 阅读 · 0 评论 -
SMBus接口协议
简介SMBus(System Management Bus)是Intel与Duracell共同制定的接口,首版于1995年发表,参考I2C接口。SMBus是一种二线制串行总线(还有两根可选信号线SMBSUS#(系统低功耗挂起状态指示)、SMBALERT#(事件提醒)),它大部分基于I2C总线规范。和I2C一样,SMBus可以不增加额外引脚,创建该总线主要是为了增加新的功能特性,支持低功耗和高功耗两种模式,其总线速率支持100kHz、400kHz、1MHz。它工作在主/从模式:主器件提供时钟,在其发起一次转载 2021-12-15 20:30:55 · 13443 阅读 · 0 评论 -
MPU6050姿态解算
参考文章欧拉角, 用于描述刚体在三位欧几里得空间的取向;四元数, 用于描述刚体的旋转;四元数与欧拉角(RPY角)的相互转换, 详细介绍了欧拉角和四元数的转换关系, 并且给出了示例代码, 但是需要注意代码基于Z-Y-X顺规变换;MPU6050 获取角度理论推导, MPU6050获取角度的理论推导;MPU6050的四元数解算姿态方法, 对刚体的欧拉角及旋转做了介绍, 但是未介绍加速度分量, 角速度分量计算四元数的原理, 同样提供了代码但未做滤波处理;MPU6050姿态解算2-欧拉角&旋转矩原创 2021-12-03 15:46:22 · 2011 阅读 · 0 评论 -
atan实现
问题使用嵌入式编译平台时, 如果改编译平台未实现某些库函数, 则就需要用户自己实现了. 在通过多轴传感器获取数值, 计算物体姿态的时候经常要用到三角函数, 比如以正切函数的反函数atan;结果stackoverflow上看到(面向stackoverflow编程)有人贴了近似实现代码:使用了合理近似得到了反正切的归一化值, 在[0, 1)之间, 可以通过乘上π/2得到实际反正切值; 反正切函数使用了以下近似公式:arctannormalized(x)≈b×x(1+2×b×x+x2)arctan_{原创 2021-11-23 13:22:26 · 4299 阅读 · 0 评论 -
keil warning: “extended constant initialiser used“
问题使用keil编译的时候, 编译器报"extended constant initialiser used"的警告信息;结果导致这个问题的根本原因是, 错误的使用的指向静态变量的指针, 如下:int x = 1;int y = (int) &x;Modify versionint x = 1;int *y = &x;printf("%p\n", &x); // memory address of xprintf("%p\n", &y); //原创 2021-11-22 09:45:06 · 3756 阅读 · 0 评论 -
MCU和FPGA的区别
FPGAs are highly configurable, general purpose integrated circuits (ICs) filled with small programmable digital logic building blocks called “logic cells” (by Altera) or “logic elements” (by Xilinx). A custom IC, or Application Specific Integrated Circuit转载 2021-10-12 16:43:45 · 2188 阅读 · 0 评论 -
三轴、六轴、九轴传感器
只要说到多少轴的传感器一般是就是指加速度传感器(即加速计)、角速度传感器(即陀螺仪)、地磁传感器(即电子罗盘)。这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴的力,因此也常常被称为3轴加速度计、3轴陀螺仪、3轴磁力计。上述3类传感器有其各自的功能特点及应用,比如加速计可以测量设备的运动状态变化,陀螺仪可以测量设备自身的旋转运动,还有磁力计可以定位设备的方位。通过它们相互组合和匹配融合又可以衍生出更多的不同应用,在叫法上通过这样简单的轴数上相加的可以变成六轴传感器或者九轴传感器。原创 2021-09-14 20:44:59 · 5699 阅读 · 0 评论 -
最大化蓝牙吞吐量系列2: 使用更大的ATT MTU
大家普遍认为随着BLE设备吞吐量的增加,其功耗也会增加。但是,通过智能地选择MTU大小,您实际上可以增加吞吐量,同时降低功耗.NOTE: This is Part 2 in Punch Through’s Maximizing BLE Throughput blog series. Here are links to our other posts in this series:Part 1: Maximizing BLE Throughput on iOS and AndroidPart 3: M翻译 2021-08-26 18:37:04 · 3010 阅读 · 0 评论 -
keil编译后显示的Program size含义
示例使用keil编译完成后, 程序会弹出如下类似信息, 可能有些人不关注此类信息, 其实某些时候还是挺有帮助的, 比如裁剪程序尺寸, 使其大小能装进目标机器运行时;Program Size: Code=33112 RO-data=1108 RW-data=1236 ZI-data=89452 FromELF: creating hex file...解释Code表示代码占用空间;RO=read-only;RW=read-write;ZI=zero-initialized;以LPC1原创 2021-08-23 09:55:57 · 3805 阅读 · 0 评论 -
AMBA、AHB、APB、AXI总线介绍
转自:AMBA、AHB、APB、AXI总线介绍及对比一、AMBA概述AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构定义了高性能嵌入式微控制器的通信标准,可以将RISC处理器(精简指令集处理器)集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”,并且是ARM复用策略的重要组件;它不是芯片与外设之间的接口,而是ARM内核与芯片上其他元件进行通信的接口。比如Xilinx公司的Zynq芯片,就是ARM与FPGA之间的连接..转载 2021-08-19 13:07:43 · 5996 阅读 · 1 评论 -
单片机中为什么既有Flash又有EEPROM
转自:为什么单片机中既有Flash又有EEPROM单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。插播一段:ROM最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了PROM,可以自己写入一次,要是写错了,只能换一片。随着不断改进,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需转载 2021-08-18 20:50:08 · 596 阅读 · 0 评论 -
GPIO输入与输出设置
GPIO(也称为通用输入/输出)是控制器中最简单也是最重要的配置。但即便如此,IO也有各种各样的类型和配置选项,有输入,输出,上拉,下拉,推挽等。虽然我们天天都和它打交道,但是你真的了解其中的配置吗?输入模式通常,GPIO输入主要通过以下三种方式之一进行配置:● 高阻抗(Hi-Z,也称为浮动floating)● 上拉(Pull-up,内部电阻连接到VCC)● 下拉(Pull-down,内部电阻连接到地)当Input port被处在高阻抗的模式下,若没有外部讯号源进来的话,此时是无转载 2021-07-28 15:32:39 · 2962 阅读 · 0 评论 -
RS232和TTL电平
RS323是一种通讯标准,因为高电平+15V低电平--15V电位差30V容错空间大,抗干扰能力强,一般用于工业设备直接通信电平转换芯片一般有MAX3232,SP3232;最简单的RS232通信由三条数据线组成,即TxD、RxD和GND。RS232采用负逻辑电平,即-15V~-3V代表逻辑"1",+3V~+15V代表逻辑"0"。这里的电平,是TxD线(或者RxD线)相对于GND的电压。(关于物理接口,请参考文章:工业串口通信之掀起串口的盖头);TTL一般是从单片机或者芯片中发出的电平; TTL电路的工作.转载 2021-07-28 15:30:06 · 9974 阅读 · 0 评论 -
Error: Flash Download failed - “Cortex-M4
问题打开keil工程, 编译后执行编程时, keil报错 Error: Flash Download failed - "Cortex-M4; 其中cortex-M4是所采用的单片机所属系列;结果原因是Debug中关于烧写工具未添加设备;点击魔术棒, 打开项目(Project)的选项(Option)页;选择Debug页, 勾选右侧 Use, 选择对应的设备(本处选择Jlink), 然后点击setting;点击进入FlashDownload页面, 点击add;选择对应设备添加;点击确定原创 2021-07-21 19:53:48 · 2290 阅读 · 0 评论 -
keil中.uvproj迁移到.uvprojx
.uvproj和.uxprojx的区别和word文档的情况一样,2003版本之前的word文档后缀名为doc,其后版本word文档后缀名改为docx。同理.uvproj是keil4版本的keil工程文件,而.uvprojx是keil5版本的keil工程文件。高版本的兼容低版本的,也就是说,keil5能够打开后缀名为uvproj的工程,但是有条件的。打开的时候会弹出下面的方框:第一个选项是,把它变成keil5的工程格式,也就是后缀名为uvprojx的keil工程;第二个选项是,打开后仍然是原创 2021-07-21 16:50:24 · 3653 阅读 · 0 评论 -
单片机常见调试接口简介
嵌入式开发和ARM开发搞常见调试接口有SWD、JTAG、Jlink、Ulink、STlink,其中区别是:JTAG协议JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:TMS:测试模式选..转载 2021-07-13 13:37:30 · 4321 阅读 · 0 评论 -
常见的Quad-SPI引脚含义
常见的SPI接口设备通常有:Single-SPI (traditional SPI), Dual-SPI, Quad-SPI, Dual-quad-SPI and Octo-SPI,而且多数据引脚通常支持低数据引脚协议配置;VCC - this is the power pin. Since the chip uses 3-5VDC you should pick whatever the logic voltage you’re using.For most Arduino’s that’s 5V.原创 2021-06-23 12:33:53 · 2570 阅读 · 0 评论 -
USART和UART的区别
Have you ever used the term UART only to be corrected by another engineer that it isn’t a UART but USART? In certain circumstances the interchangeability of these terms may be appropriate but in many cases it is in error. Let’s examine what a USART and a U转载 2021-06-10 09:34:59 · 568 阅读 · 0 评论 -
单片机学习
单片机晶振周期用 12MHZ 的晶振 1 秒钟大概要震荡多少次?频率的单位是赫兹,用 Hz 表示,含义就是 1 秒钟振荡多少次。12MHz = 12,000,000Hz,也就是 1 秒振荡一千二百万次。机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个 S 周期(状态周期)组成。通常用内存中读取一个指令字的最短时间来原创 2020-08-06 10:55:34 · 2573 阅读 · 0 评论