硬件学习---通信协议

本文介绍了串行通信的不同方式,包括异步传输与同步传输的特点及应用场景。对比了RS232和RS485在传输方式、距离、设备数量和连接方式上的差异。详细解析了SPI接口的全双工通信特性以及其关键信号线的作用。同时,探讨了I2C通信协议的多主机半双工特性,以及起始和停止信号的定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、异步传输&同步传输

异步传输:基于字节的输入输出,数据按每次一个字节进行传输,其传输速度低。

同步传输:需要外界的时钟信号进行通信,是把数据字节组合起来一起发送,这种组合称之为帧,其传输速度比异步传输快。

二、RS232和RS485

两者的区别

1. 传输方式不同。RS232采取不平衡传输方式,即单端通讯。RS485采用平衡传输,即差分传输方式。

2. 传输距离不同。RS232适合本地设备之间通信,传输距离一般不超过20m。RS485的传输距离为几十米到几千米。

3. 通信设备数量。RS232只允许一对一通信,而RS485接口在总线上是允许连接多达128个收发器。

4. 连接方式不同。RS232用电平表示数据,因此线路就是单线路,用两根线才能达到全双工的目的。RS485使用差分电平表示数据,必须用两根线才能达到传数据的要求,要实现全双工需要4根线

三、SPI(Serial Peripheral Interface)

串行外围设备接口,是一种高速全双工的通信总线。SPI总线系统是一种同步串行外设接口,可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI总线可直接与多种标准外围器件相连,包括FLASH、RAM、网络控制器、LCD显示驱动器、AD转换器和MCU等。

MOSI(Master Output,Slave input):主设备输出,从设备输入,方向是主机到从机。

MISO(Master Input,Slave Output):主设备输入,从设备输出,方向是从机到主机。

SCLK(Serual Clock):时钟信号线,用于通信数据同步。由通讯主机产生,决定了通讯的速率。不同设备支持的最高时钟频率不一样,受限于低速设备。

SS(Slave Select):从设备选择信号—片选信号。当有多个SPI从设备与主机相连时,设备的其他信号线sck、mosi、miso同时并联到相同的SPI总线上,即无论有多少个从设备,都共同只使用这三条总线;而每个从设备都有独立的一条片选信号。

I2C是通过设备地址来寻址,选中总线上某个设备并与其进行通讯;而SPI中没有设备地址,是通过片选信号来寻址。当主机要选择从设备时,把该从设备的片选信号线设为低电平,接着主机开始与被选中的从设备进行SPI通讯。

四、IIC

由数据线SDA和时钟SCL构成的串行总线,是一个多主机的半双工通信方式。每个挂接在总线上的器件都有个唯一的地址

空闲状态:SDA和SCL都处于高电平。不传输数据时,两条信号线被上拉电阻拉高。

起始信号:SCL处于高电平,SDA由高到低跳变,这时是启动信号,只能由主机发起。

停止信号:SCL处于高电平,SDA由低到高跳变,这时是停止信号,表示传输完成。

### 关于Gemini 2.0 Flash的技术文档下载、安装与使用教程 #### 文档获取途径 对于希望深入了解Gemini 2.0 Flash技术细节并获取官方指导文件的开发者而言,通常可以通过访问Google AI官方网站或GitHub仓库来找到最新的API文档和技术白皮书。此外,在一些情况下,特定版本如Flash可能通过参与早期测试计划获得专属资料[^1]。 #### 安装环境准备 为了顺利部署和运行Gemini 2.0 Flash模型,建议先确认本地开发环境中已正确配置Python解释器及相关依赖库。考虑到该模型对硬件性能有一定要求,拥有NVIDIA GPU支持将会显著提升训练效率。同时,确保网络连接稳定以便顺利完成必要的软件包更新操作[^4]。 #### 使用指南概览 一旦完成上述准备工作,则可通过如下方式快速启动Gemini 2.0 Flash的应用程序: -m venv gemini_env source ./gemini_env/bin/activate # Linux/MacOS 或者 .\gemini_env\Scripts\activate.bat # Windows ``` - **安装所需库**:依据官方提供的requirements.txt清单批量安装第三方模块 ```bash pip install -r requirements.txt ``` - **加载预训练模型**:利用`transformers`或其他兼容接口读取远程服务器上的权重参数 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name_or_path = "google/gemini-2.0-flash" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) ``` - **构建交互界面**:借助Streamlit等可视化工具搭建简易的人机对话平台,方便用户输入查询语句并展示返回结果 ```python import streamlit as st user_input = st.text_area("请输入您的问题:") if st.button('提交'): inputs = tokenizer(user_input, return_tensors="pt") outputs = model.generate(**inputs) response_text = tokenizer.decode(outputs[0], skip_special_tokens=True) st.write(response_text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值