- 博客(19)
- 收藏
- 关注
原创 GPIO和Pinctrl子系统的使用
在前面我们通过编写驱动来实现led的亮灭,首先从普通的字符设备驱动编写,接着使用平台总线模型进行编写,最后采用设备树进行编写驱动。使用设备树编写驱动时,设备树上记录着硬件信息,在实际开发中,可以使用GPIO和Pinctrl子系统代替查找寄存器,使用Pinctrl子系统设置IO复用关系,使用GPIO子系统设置引脚的输入、输出、电气特性。在驱动代码中:使用 GPIO 子系统的标准函数获得 GPIO、设置 GPIO 方向、读取/设置 GPIO 值。1.首先需要指定IO的Pinctrl属性,也就是状态,节点;
2024-07-22 19:53:48
275
原创 基于im6ull开发板的设备树驱动led亮灭
设备树是描述硬件信息的平台,主要是描述芯片外设的寄存器地址,可以用一张图来描述设备树:在Linux中主要是以dts文件体现的。该文件中记录着硬件信息,怎么样才能让内核知道硬件信息呢。首先通过内核编译dts文件,生成dtb文件,一个单板启动时, u-boot 先运行,它的作用是启动内核。u-boot 会把内核和设备树文件都读入内存,然后启动内核。在启动内核时会把设备树在内存中的地址告诉内核。
2024-07-18 14:49:56
1039
原创 总线设备驱动模型
总线设备驱动模式的优势就是将驱动和硬件信息分开,遇到类似的修改device信息就行。内部驱动的编写方式还是与常规的字符驱动编写方式基本相似,使驱动具有更好的扩展性,但也有缺点,冗余代码太多,修改引脚时设备端的代码需要重新编译。感觉还是设备树方便。
2024-07-15 21:28:47
1010
1
原创 Linux基本命令
1.pwd:打印当前路径2.cd:切换路径3.mkdir:创建新目录,,创建目录和子目录4.rmdir:移除目录,5.ls:列出目录内容,-a:所有文件,-l:详细信息6.cp:复制文件,-r:表示所有文件,-f:表示强制,7.rm:删除文件和目录,-r:表示所有文件,-f:表示强制,8.cat:打印文件内容9.touch:修改文件时间,文件不存在则创建空文件。
2024-02-25 21:12:13
419
1
原创 Freertos低功耗管理
在整个系统运行得过程中,其中大部分时间都是在执行空闲任务的,空闲任务之所以执行,因为在系统中的其他任务处于阻塞或者被挂起时才会执行,因此可以将空闲任务的执行时间转换成低功耗模式,在其他任务解除阻塞而准备运行的时候让MCU退出相应的低功耗模式。如何计算MCU进入低功耗模式的时间。从以上代码可以看出,首先判断进入低功耗模式的时长,当大于两个时钟节拍的时候,进入低功耗模式,进入之后在计算低功耗时长。
2024-01-08 17:44:50
455
原创 Freertos内存管理
相比于静态创建,动态创建是Freertos从自己管理管理得内存中进行分配,在删除任务得时候,又可以释放之前创建得内存堆,比静态创建任务灵活许多。heap_1:只允许申请内存,不允许释放内存(适用于 个别嵌入式系统,一旦创建好就不会删除的任务):允许申请和释放内存,并且可以合并相邻的内存块,减少内存碎片的产生(常用的内存管理算法)heap_2:允许申请释放内存,但不能合并相邻空闲的内存块(会产生大量的内存碎片)pvPortMalloc(pv):pv:所要申请的内存的大小,并返回内存的首地址。
2024-01-08 11:08:32
408
原创 SPI协议 & Flash
SPI是一种串行外围设备接口高速全双工同步的通信总线。同步 串行 全双工同步 串行 半双工MOSIMISOSCLCSSDASCL一主多从一主一从多主从片选引脚选择SDA上设备地址片选一般50MHz以下100kHz400kHz3.4MHz8位/16位8位MSB/LSBMSB广泛应用于MCU、FLASH、AD转换器和LCD之间。
2023-08-04 20:12:30
220
1
原创 ADC采集 && DMA转运
DMA,即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设辟一条直接传送数据的通路, 能使 CPU 的效率大为提高。STM32F103 内部有2 个 DMA 控制器(DMA2 仅存大容量产品中), DMA1 有 7 个通道。DMA2 有 5 个通道。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个 DMA 请求的优先权。
2023-08-02 17:17:50
1221
原创 DHT11温湿度传感器 & STM32f103zet6
DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11与DS1B8B20的时序有相似之处,但相对来说简单许多。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先发。DHT11 的数据格式为:8bit 湿度整数数据+8bit 湿度小数数据+8bit 温度整数数据+8bit 温度小数部分+8bit 校验和。其中校验和数据为前面四个字节相加。
2023-07-26 11:05:33
776
1
原创 DS18B20温度读取 & STM32F103ZET6
它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。单总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新的概念,测试温度范围为-55~+125℃,精度为±0.5℃。DS18B20返回的16位二进制数代表此刻探测的温度值,其高五位代表正负。如果高五位全部为1,则代表返回的温度值为负值。如果高五位全部为0,则代表返回的温度值为正值。后面的11位数据代表温度的绝对值,将其转换为十进制数值之后,再乘以0.0625即可获得此时的温度值。
2023-07-26 10:12:09
495
1
原创 I2C & STM32F103zet6 & AT24C02
主机在发送字节之后,需要释放SDA,场景可以理解为主机发送完一个字节之后,从机是否有人接收到,如果接收到之后,主机在释放SDA后,从机立马将SDA拉下,在SCL高电平期间读取应答位。:SCL低电平期间,从机将数据放到SDA线上(高位先发),然后释放SCL,主机在SCL高电平期间读取数据,所以SCL高电平期间数据不允许有变化,依次循环8次,则发送一个字节。:主机在发送完一个一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,0表示应答,1表示非应答(),在当前地址指针指示的地址下,读取从机数据(
2023-07-22 16:34:49
406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人