单片机通讯协议

参考:江科大单片机教程 STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

IIC通讯协议SPI通信协议UARTCANUSB
速度100k-400khz4Mhz-
线数2 CLK,DATA4CLK,ENB,IO,OI
额外设备
一主多从一主多从

一般不用自己写,都有相应的库或官方提供相应的,改改就行,没有了再去看视频或是从其它处移植过来,改改;

IIC通讯协议

通信时序 发送数据过程  发送地址 接收1位 发送数据 置高 继续接收 继续发送 

可以软件模拟

因为多设备,并且只有两条线,因为设备内有多个寄存器,从而数据发送,读写时,需要发送设备地址和设备寄存器地址(连接上地线

写时序 : 七位设备地址,和一位读写位 ;设备应答后,发送写入的地址,应答后,写入数据

设备地址和内部寄存器地址

读时序:当前地址读;因为地址为当前地址,从而要读特定地址时,要用写时序写入地址,不发送数据,然后发送重新开始信号,再进行读时序

连续写,连续读,只要接收或读取数据后,给出应答,即会连续

一条CLK 一条DATA线

多个设备

因为时钟线为主机控制,所以可以中断停止后再继续接收,发送

SPI通信协议

可以软件模拟(但软件模拟从机时,容易出现丢帧,导致后续数据都是错的。。。但可以用于LCD等

CLK,MOSI,MISO,CS1,CS2,CS3

一对多;多个设备;对设备的选择通过CS1,CS2,CS3的拉底来实现

采用循环发送数据模式;MOSI 发出一位的同时置换回MISO内的一位,直到一个字节发送完,同时也接收了从机的一个字节

读写格式,依不同的设备而定;没有统一的,按具体设备翻看手册

连续读写,只要cs线没断开就可以连续;断开则停止 

因为时钟线为主机控制,所以可以中断停止后再继续接收,发送

UART通信协议

一对一

TX RX GND 

使用内部时钟作为时钟,导致通信双方需要相同的波特率;

因为内部时钟,从而有校验位,为信息传递进行准备性,抗干扰设置

读写协议格式:自已协定

连续读写:连续

TTL电平:+3.3V或+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3~+15V表示0
RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

——来自江科大:PPT

一般不会使用到,使用到时通常有操作系统,或是驱动已经集成了,只需要使用即可;使用于嵌入式,高效,稳定阶段,有专门的驱动,不需

多设备同时传输,从而需要确定传输方是谁,多人同时传输,只有两线,从而决定,谁先谁后,从而协议;

时钟来源:主设备,还是内部时钟

SPI,UART,I2C 因从设备选择由主机控制,实现主从,从而不需要确定传输方和仲裁先后

*CAN通信协议(CAN总线入门教程 - 持续更新中_哔哩哔哩_bilibili

需要额外外部电路

一对多,主从可以变化;一发送,其它的接收,

组成网络结构,任何一方皆可发送;其它方接收;发送方切换

信息稳定性,同时传输

从而有仲裁,信息传输正确;从而使用协议验证

传输距离,稳定性

*USB通信协议

差分电路,抗干扰,运输长度

有多设备,从而有总线仲裁,谁先使用

有多设备,从而信息传递中,信息的传输方来源,使用信息符带地址,验证,信息

一,不需要重新写协议,除非你要移植到新出的产品上,(一般也只需要使用原有的修改一下即可,要了解具体的过程的

二,一般都会提供相应的协议的实现的,不需要再

三,具体场景具体使用,不需要使用高的,一般的需求已经满足了,高的用不到——

总结一下

根据主机挂载从机的数量,与选择从机的方式

uarti2cspicanUSB
一对一两根线选择所有的从机通过各个cs线选择不同的从机形成网络结构任意一方可成为主机可挂载多个设备
只有两个设备地址就不需要了从而需要地址来确定选择哪个设备直接通过csx选择不同的从机,地址可省略了两线,从而需要地一个usb 主机可挂载多个usb设备,D+D-选择,从而需要地址,

连线方式

uart 

rx->tx tx->rx gnd->gnd

spi 

SCL ->SCL ; MISO->MOSI GND->GND

I2C

CLK->CLK; DAT ->DAT

arudino 

I2C 协议 与 移植

asrpro 

1.添加头文件

2.修改函数

SSD1306  移值

ASRPRO - ssd1306的核心函数 按网上的u8g2移植过程,修改代码如下

uint8_t u8x8_avr_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr){// Re-use library for delaysswitch(msg){//mscase U8X8_MSG_DELAY_MILLI:delay(1);break;//10 uscase U8X8_MSG_DELAY_10MICRO:delay10us();break;//1 nscase U8X8_MSG_DELAY_NANO:delay1us();break;case U8X8_MSG_DELAY_100NANO:delay1us();break;case U8X8_MSG_GPIO_AND_DELAY_INIT:  // called once during init phase of u8g2/u8x8ssd1306_spi_init();break;              // can be used to setup pinscase U8X8_MSG_GPIO_SPI_CLOCK:        // Clock pin: Output level in arg_intif(arg_int)digitalWrite(SCK,1);elsedigitalWrite(SCK,0);break;case U8X8_MSG_GPIO_SPI_DATA:        // MOSI pin: Output level in arg_intif(arg_int)digitalWrite(MOSI,1);elsedigitalWrite(MOSI,0);break;case U8X8_MSG_GPIO_CS:        // CS (chip select) pin: Output level in arg_intif(arg_int)digitalWrite(CS,1);elsedigitalWrite(CS,0);break;case U8X8_MSG_GPIO_DC:        // DC (data/cmd, A0, register select) pin: Output level in arg_intif(arg_int)digitalWrite(DC,1);elsedigitalWrite(DC,0);break;case U8X8_MSG_GPIO_RESET:     // Reset pin: Output level in arg_intdefault:break;}return 1;
}

*PCA9865

*使用官方的softiic修改下发送地址 地址即可 左移一位  0,1( 读写?)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

舌头分割YOLOV8-SEG

舌头分割,基于YOLOV8-SEG,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,从而摆脱YOLO依赖,支持C,PYTHON,ANDROID开发 舌头分割YOLOV8-SEG

使用预训练模型构建自己的深度学习模型(迁移学习)

在深度学习的实际应用中,很少会去从头训练一个网络,尤其是当没有大量数据的时候。即便拥有大量数据,从头训练一个网络也很耗时,因为在大数据集上所构建的网络通常模型参数量很大,训练成本大。所以在构建深度学习应用时…

OS对软件的管理,进程,PCB、子进程

进程 可执行程序加载到内存中,操作系统为内个程序都形成一个PCB对象(结构体对象),PCB里存放着这个程序的所有的属性。进程可执行程序PCB ,CPU执行程序也是先通过该程序的PCB找到相应的程序代码,然后一条一…

ThinkPHP5 SQL注入漏洞敏感信息泄露漏洞

1 漏洞介绍 ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5.0&#xff08;<5.1.23&#xff09;中,开启debug模式&#xff0c;传入的某参数在绑定编译指令的时候又没有安全处理&#xff0c;预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式&#xff0c…

分享一些实用的工具

1、amCharts5&#xff1a;模拟航线飞行/业务分布图/k线/数据分析/地图等 网址&#xff1a; JavaScript mapping library: amCharts 5https://www.amcharts.com/javascript-maps/ Demo地址&#xff1a;Chart Demos - amChartshttps://www.amcharts.com/demos/#maps 他分为amC…

小龙虾优化算法(Crayfish Optimization Algorithm,COA)

小龙虾优化算法&#xff08;Crayfish Optimization Algorithm&#xff0c;COA&#xff09; 前言一、小龙虾优化算法的实现1.初始化阶段2.定义温度和小龙虾的觅食量3.避暑阶段&#xff08;探索阶段&#xff09;4.竞争阶段&#xff08;开发阶段&#xff09;5.觅食阶段&#xff08…

【誉天战报】3月HCIE战报火热来袭!新增45位同学通过认证!

2024年3月&#xff0c;誉天教育共有45名学员顺利通过了HCIE认证&#xff0c;其中&#xff1a;云计算20人、数通18人、存储5人、云服务2人。让我们一起祝贺他们吧~ 誉天教育是华为优选级授权培训合作伙伴&#xff0c;专业从事华为授权认证课程实战技能培训。连续13年荣获“华为优…

和林曦老师一起读书吧 | 愿我们:只生欢喜不生愁

今天&#xff0c;想和你一起来读书&#xff0c;林曦老师的《只生欢喜不生愁》。    这本书的名字很有意味&#xff0c;它来自于清代《养真集》中的一句话&#xff1a;自古神仙无别法&#xff0c;只生欢喜不生愁。      我们会羡慕这样的状态&#xff1a;只生欢喜不生愁…

018基于SSM的音乐系统网站

018基于SSM的音乐系统/网站 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MysqlIntelliJ IDEA(Eclipse)Maven 数据库&#xff1a; MySQL 技术&#xff1a; SpringSpring mvcMybatisJqueryVideo jsJSPJSTLEasyUI 适用于&#xff1a; 课程设计&#xff0c;毕业设计&#xff0c;学习…

“你需要TrustedInstaller提供的权限才能对此文件进行更改” 解决方案

转载地址 【“你需要TrustedInstaller提供的权限才能对此文件进行更改” 解决方案-CSDN博客】

37.WEB渗透测试-信息收集-企业信息收集(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;36.WEB渗透测试-信息收集-企业信息收集&#xff08;3&#xff09;-CSDN博客 关于主域名收…

Git -- 运用总结

文章目录 1. Git2. 基础/查阅2.1 基础/查阅 - git2.2 仓库 - remote2.3 清理 - rm/clean2.4 版本回退 - reset 3. 分支3.1 分支基础 - branch3.2 分支暂存更改 - stash3.3 分支切换 - checkout 4. 代码提交/拉取4.1 代码提交 - push4.2 代码拉取 - pull 1. Git 2. 基础/查阅 2…

(学习日记)2024.05.07:UCOSIII第六十一节:User文件夹函数概览(uCOS-III->Source文件夹)第七部分

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

RISC-V CVA6 在 Linux 下相关环境下载与安装

RISC-V CVA6 在 Linux 下相关环境下载与安装 所需环境与源码下载 CVA6 源码下载 首先&#xff0c;我们可以直接从 GitHub 一次性拉取所有源码&#xff1a; git clone --recursive https://github.com/openhwgroup/cva6.git如果这里遇到网络问题&#xff0c;拉取失败&#x…

Fluent.Ribbon创建Office的RibbonWindow菜单

链接&#xff1a; Fluent.Ribbon文档 优势&#xff1a; 1. 可以创建类似Office办公软件的复杂窗口&#xff1b; 2. 可以应用自定义主题风格界面

实现 <el-cascader> 组件的回显功能

vue A页面&#xff0c;用户填写了el-cascader多层级数据&#xff0c;层级list数据从接口获取&#xff1b; vue B页面&#xff0c;多层级数据要进行回显&#xff0c;接口给到的数据是value值&#xff1b; 直接看demo <template><div><el-cascaderv-model"…

android studio 编译一直显示Download maven-metadata.xml

今天打开之前的项目的时候遇到这个问题:android studio 编译一直显示Download maven-metadata.xml, AI 查询 报错问题&#xff1a;"android studio 编译一直显示Download maven-metadata.xml" 解释&#xff1a; 这个错误通常表示Android Studio在尝试从Maven仓库…

ReactJS中使用TypeScript

TypeScript TypeScript 实际上就是具有强类型的 JavaScript&#xff0c;可以对类型进行强校验&#xff0c;好处是代码阅读起来比较清晰&#xff0c;代码类型出现问题时&#xff0c;在编译时就可以发现&#xff0c;而不会在运行时由于类型的错误而导致报错。但是&#xff0c;从…

中国各银行流动性比例数据集(2000-2022年)

01、数据简介 银行流动性比例是指银行的流动性资产期末余额与流动性负债期末余额之比&#xff0c;用于衡量银行流动性的总体水平。这个比例越高&#xff0c;表明银行偿还短期债务的能力越强&#xff0c;流动性风险越小。 本数据覆盖到城市商业银行、城镇银行、大型商业银行、…

张小泉签约实在智能,用实在Agent打造自动化高

在不少老杭州人的童年记忆里&#xff0c;妈妈裁剪衣服、料理食材、修剪各种物品&#xff0c;用的都是张小泉刀剪。 近日&#xff0c;实在智能与“刀剪第一股”张小泉&#xff08;股票代码&#xff1a;301055.SZ&#xff09;正式达成合作&#xff0c;实在Agent数字员工助力张小…