avatar
文章
107
标签
40
分类
34

Home
Tags
Categories
Music
港乐Live Show
Eden Mo Blog
搜索
Home
Tags
Categories
Music
港乐Live Show

Eden Mo Blog

MCU通信协议(二):I2C协议
发表于2023-07-20|MCU开发MCU通信协议|MCU开发
I2C概述 I2C(Inter IC BUS)是一种半双工的通信协议,具有以下特点: 同步半双工:一根线发送和接收数据,最大化利用线资源;时钟线保证时序一致性,去除对硬件异步电路依赖; 两根数据线:即时钟线SCL(Serial Clock)与数据线SDA(Serial Data) 一主多从/多主多从:允许多个从机挂载在I2C总线上,一个系统的从机也可以通过多主多从成为主机; 具有数据应答功能:发送、接收一个字节都需要进行数据确定; 通信速率较低:100kbps、400kbps、3.4Mbps; I2C硬件设计 硬件上,I2C只需要两根线就可以将多个从机链接在一起,节省了数据线的资源。另一个特点是,I2C的数据线均采用开漏输出的模式。 首先SDA必须采取开漏输出:在GPIO模式讨论过开漏输出的特点,也即低电平仍然是mos管导通接地,是一种强下拉。而漏极是开路的,说明无法直接输出高电平,只能通过外接电阻(I2C中一般采用4.7k限流电阻)输出高电平,mos管阻值很大,因此上拉电压接近外部电压,是一种弱上拉;这种模式在主机、从机SDA或者实现从机线与时,不会 ...
stm32开发:Keil环境配置
发表于2023-07-13|MCU开发Keil环境配置|MCU开发
环境 Keil是一款强大的Debug软件,尤其适用于stm32还有其他一系列32、8系的处理器标准库、寄存器开发。但是少有的缺点是从头新建一个工程配置需要的步骤和细节也比较多,日子长了脑袋也不好使,每次都要查几次,就有了这篇文章作为参考记录;更换stm系列芯片例程也可以参考这篇文章。 环境: Win10 Keil MDK 5/Keil MDK+C51 5 stm32f103c8t6 ST-Link 后两者不是必须,相应调整部分内容即可。 新建工程 新建一个文件夹,Project项新建项目指定该文件夹,然后会进入芯片选型;芯片选型来自在线下载(弹窗)或者手动导入(厂商提供的工具包);这里选择对应的芯片信号即可,OK完成创建; 在文件夹下可以看到新建的工程文件,创建新文件夹Start,存放stm32系统启动文件,包含: core_cm3.c/core_cm3.h:提供了Cortex-M3内核的相关函数,例如中断、异常处理; startup_stm32f10x_md.s:汇编语言编写的启动文件,设置堆栈指针、数据段等,后缀md代表中密度 ...
MCU通信协议(一):SPI协议
发表于2023-07-12|MCU开发MCU通信协议|MCU开发
SPI概述 SPI(Serial Peripheral Interface,串行外设接口)协议是一种全双工通信协议,SPI最主要的特点是: 一主多从:即一个主设备(主机)同时和多个串行设备(从机)通信; 同步全双工:具有时钟线作为同步信号,主机和从机需要共地,如果从机没有独立供电还需要主机提供供电口;能够同时发送和接收数据; 简单且高速:SPI的时序简单,因为线多端口多没有电平瓶颈(每新加一个从机主机就要增加一个SS端口进行片选,例如三个从机就要三个主机SS端口),主机输出配置成推挽输出,输入(MISO)配置成浮空或者上拉输入,电平驱动能力强;通信速率极高(几十Mbps); 四根通信线,接口开销大:SCK(Serial Clock)、MOSI、MISO、SS(Slave Select),其中MOSI、MISO其中的M代表主机Master,S代表从机Slave,分布代表主机发从机收,主机收从机发,MISO就接在从机的MISO上,MOSI就接在从机的MOSI上(一般命名上,从机作为没有主控的设备,MISO会命名成输出端,如DO、SDO等,MOSI会命名成DI、SDI等, ...
开源器件--温湿度传感器DHT11
发表于2023-07-11|MCU开发开源器件DHT11|MCU开发
参考文章:《DHT11详细介绍》:http://t.csdn.cn/L0M3r 本文实验平台:MM32F527x平台验证通过 开源器件这个系列将记录一系列我接触到的各种器件驱动模块,现在开源的资料众多,编程已经是基于模块化的思想,尤其是Arduino、Micropython等语法简单的开发语言的入局,大大降低了开发者开发难度。对于最经典的32位产品STM32而言,意法半导体公司也停止了标准库的更新,转而投入HAL库开发。以上无一例外是隐藏了部分底层原理结构换取调用的便捷性,这种对用户友好的做法很大程度上会带来系统性能的牺牲。接下来的这款DHT11的开发虽然简单,但是debug过程也遇到了一些与性能有关系的问题值得记录,与其让它烂在网盘里,不如发出来可能会对别人有所启发。 DHT11工作时序 DHT11采用单总线通信方式,过程为: 1 主从机引脚初始化,主机拉高总线至VCC,从机高电平下无应答; 2 主机发出通信请求,拉低总线电平至少18ms,再拉高总线电平20-40us,切换至浮空输入监听从机响应; 3 从机识别到主机信号,发起响应:从机拉低总线电平80us,再拉高电平 ...
格式化输出与数据类型
发表于2023-07-10|PythonC|格式化输出
俗语说浅水淹死人,作为Hello World的第一门必修语法,格式化输出就是这样的存在。明明熟背在心,隔几个礼拜不print就只记得print和printf了,每次要用都要上网再查一次。干脆在这篇博文,简单归纳一下C语言、python两大块常用的格式化输出语法。 参考文章: 《printf()用法详解》 《简述strcpy、sprintf、memcpy》 《C/C++中volatile关键字详解》 C语言 printf sprintf fprintf printf 最简单用法: 1printf("Hello World") 和python的print和C++的cout不同,printf不能直接输出字符数据,如printf(a)这种写法是错误的,必须经过格式化参数输出,参数以下: 123456789参数 数据类型 说明 %d(%i) int 十进制有符号32bits整数 %u unsigned ...
stm32标准库开发(一):八种GPIO模式介绍
发表于2023-07-09|MCU开发开源器件stm32|MCU开发
八种GPIO模式 stm32定义了GPIO的八种模式,分别为4种输入模式和4种输出模式,使用场合、时机有所不同: 12345678910typedef enum{ GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18}GPIOMode_TypeDef; 输入模式 GPIO_Mode_AIN:模拟输入模式;这是最容易区分的模式,只有需要模拟输入时才需要这种模式,例如AD模数转换。 后面三种模式可以放在一起讨论 GPIO_Mode_IN_FLOATING:浮空输入模式 GPIO_Mode_IPD:下拉输入模式 GPIO_Mode_IPU:上拉输入模式 这三个输入模式是配置红框位置而来,开关如果全 ...
引导程序:LILO与GRUB
发表于2023-07-02|Linux|引导程序
前几天看到一篇很好的文章,将LILO和GRUB两种引导程序描述了一遍。刚好搭建了这个博客,就发上来看看,既是记录,也是分享。本文参考的文章放在开头表达对原作最大敬意: 《引导加载程序之争:了解 LILO 和 GRUB》:https://blog.51cto.com/u_15930680/5990075 《BIOS、UEFI、Boot Loader都是些什么》:https://zhuanlan.zhihu.com/p/336441128 BIOS与Bootloader 无论在PC,还是嵌入式系统,需要运行操作系统,就绕不开引导加载程序,复杂的PC引导程序可以由BIOS来完成,实际上BIOS是闭源的,没有严格的标准,不同的厂商做的BIOS不同,也有采用开源UEFI,有的称UEFI BIOS,总而言之,传统的BIOS已经很少见了,计算机要考虑效率、性能、安全等问题,UEFI、BIOS、Bootloader都是混合在用,只是习惯上还是叫BIOS而已,主要功能一般描述为:对硬件进行初始化,对软件进行抽象。现在的BIOS固化发展过程: ROM(不能修改)->PROM(一次性修改 ...
1…1011
avatar
Eden
不做前端所以博客不漂亮,纯免费授权码来自公众号:归零者星的日与夜
文章
107
标签
40
分类
34
Follow Me
公告
文章任何错误、疏漏、建议麻烦请联系博主qq邮箱2436444815@qq.com
最新文章
OpenCV C++记录(十一):Mat数据规范化、灰度直方图与均衡算法2025-05-15
OpenCV C++记录(十):形态学处理基础2025-05-12
OpenCV C++记录(九):二值化与图像模糊(滤波)算法2025-05-08
C++ Generic Programming:SFINAF与类型萃取2025-04-26
Modern C++ Design(第二章):Techniques2025-04-20
分类
  • C20
  • C++ Qt开发7
  • C/C++14
  • CPP14
    • C++ Generic Programming3
  • FPGA2
    • verilog2
  • Linux23
标签
3D目标检测 Linux 信号与系统 网络编程 Linux扩容 MIT6.S081 Vivado IP核 读写锁 OpenCV Modern C++ Design 数据结构与算法 引导程序 C++ Generic Programming MathType快捷键 Private Content Stanford CS144 格式化输出 内存管理理论 进程与线程 数据库 Protobuf C++ Qt C++ SFINAF and Type Traits json序列化 C++11 新特性 设计模式 C++基础 高等数学 Effective C++ 奇奇怪怪的实现 Markdown语法 CSAPP 计算机网络理论 线程池 Qt网络编程 vim使用 C++高阶 CMake Git基本使用 MCU开发
归档
  • 五月 20253
  • 四月 20254
  • 三月 20256
  • 二月 20255
  • 一月 20257
  • 十二月 20248
  • 十一月 20242
  • 十月 20245
网站资讯
文章数目 :
107
本站总字数 :
473.9k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2023 - 2025 By Eden
框架 Nodejs|你忘掉理想 只能忙于生活吗
粤公网安备 44010602011738号|粤ICP备2023072610号
搜索
数据库加载中