首页
统计归档
留言墙
关于我
Search
1
Java 中的 cron 表达式使用
136 阅读
2
宽度确定的情况下,如何让高度等于宽度
78 阅读
3
docker 安装nacos
56 阅读
4
人工智能误区
55 阅读
5
2023年的日子
55 阅读
web开发
硬件、电子
常见芯片
常见传感器
机械结构
系统、容器
往事前言
读书
登录
Search
标签搜索
docker
人工智能
浪潮之巅
JJia
累计撰写
55
篇文章
累计收到
78
条评论
首页
栏目
web开发
硬件、电子
常见芯片
常见传感器
机械结构
系统、容器
往事前言
读书
页面
统计归档
留言墙
关于我
搜索到
16
篇与
的结果
2023-02-10
stm32-f411 ec20 ftp 下载文件
AT 检测ATconnect 电信,请注意 是否是 CMNET 的配置AT+QICSGP=1,1,"CMNET","","",1激活1AT+QIACT=1是否激活检测AT+QIACT?设置密码AT+QFTPCFG="account","ftpuser","ftpuser@123"文件类型AT+QFTPCFG="filetype",1客户端模式 0 :主动模式,1被动模式AT+QFTPCFG="transmode",0超时设置AT+QFTPCFG="rsptimeout",90链接服务器--登录AT+QFTPOPEN="39.99.171.41",21跳转文件夹AT+QFTPCWD="/01428"查询最后编辑时间AT+QFTPMDTM="twuc"展示文件夹内的所有文件(这里指的是ftp服务器的指定文件夹的文件)AT+QFTPLIST="."List the content of current directory and the data is outputted to “RAM:list.txt”.AT+QFTPLIST=".","RAM:list.txt"下载文件AT+QFTPGET="twuc","COM:"清空ufs、ram、sdAT+QFDEL="*"下载文件到ufs(flash)AT+QFTPGET="twuc","UFS:ccc.txt"查询内存的文件(这里指的是ec20内的),查看返回的数据内是否含有AT+QFLST关闭ftp连接AT+QFTPCLOSE关闭激活AT+QIDEACT=1打开ufs或者ram内的文件,参数,文件名,打开方式,可读写AT+QFOPEN="ccc.txt", 0参数:文件句柄,偏移量,从文件开头偏移AT+QFSEEK=4,0,0读取文件的内容,参数,句柄AT+QFREAD=4关闭打开的文件AT+QFCLOSE=4从ufs、sd、ram下载文件AT+QFDWL="ccc.txt"通过操作寄存器来完整读取uart数据https://blog.csdn.net/zhuoqingjoking97298/article/details/121752728
2023年02月10日
32 阅读
0 评论
0 点赞
2022-12-29
GSM--GPRS
本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net通信专业术语BSS-- 基站子系统,通过无线接口与移动台直接联系,负责在一定区域内和移动台通信。(GSM)BTS-- 基站收发台,可以看作一复杂的无线调制器,BSS 的主要部分,每个分配有若干信道。(GSM)RBS--Radio Base Station,无线基站:RBS 是基站内所有设备的总称,在 GSM 规范中对应的主要部分是 BTS,它由 BSC 来控制,用来提供移动台与系统的无线接口,它是 CME20 系统中的无线设备部分,主要由无线收发信机构成。BSC-- 基站控制器,其功能是作为无线电设备与 MSC 的控制和通信的接口,直接控制 BTS。(GSM) GPRS--General Packet Radio Service, 通用分组无线电业务。GPRS 是一种新的 GSM 数据业务,它可以给移动用户提供无线分组数据接入服务。GPRS 主要是在移动用户和远端的数据网络(如支持 TCP/IP、X.25 等网络)之间提供一种连接,从而给移动用户提供高速无线 IP 和无线 X.25 业务。GPRS 采用分组交换技术,它可以让多个用户共享某些固定的信道资源。如果把空中接口上的 TDMA 帧中的 8 个时隙都用来传送数据,那么数据速率最高可达 164kb/s。GSM 空中接口的信道资源既可以被话音占用,也可以被 GPRS 数据业务占用。当然在信道充足的条件下,可以把一些信道定义为 GPRS 专用信道。沿海部分城市已开通试营业。GSM--Pan-European digital cellular land mobile telecommunication system ,泛欧数字蜂窝移动通信系统。1982 年,欧洲邮电行政大会(CEPT)设立的 "移动通信特别小组(Group Special Mobile)即 GSM 提出的数字蜂窝移动通信系统,其特点为用数字技术开发全欧统一的蜂窝系统以取代欧洲各种模拟蜂窝系统,后来又易名为" 全球移动通信系统(Global System for Mobile Communication)。1989 年制订了 GSM 标准;1991 年 GSM 系统正式在欧洲问世,网路开通运行,现已在全球获得广泛应用。该系统发射频段基台为 935~960MHz,移动台为 890-915MHz,双工间隔 45MHz,射频载波间隔 200kHz,采用时分多址技术,语音编码采用规则脉冲激励长期预测编码 (REP-LPC) 算法;小区半径 0.5~35km,频谱效率与用户容量较 TACS,NMT 等模拟蜂窝移动通信系统要高。我国就大部分采用此技术。1991 年又更名为 SMG:特别移动组。SMG1-SMG4 分别对应以前的 GSM1-GSM4,而 SMG5 是致力与 GSM 形成后的“通用移动电信系统”,1992 年又建立了一个 SMG6,负责起草运行和维护的规范。GSN--GPRS Support Node,一个 GSN 是一个网络节点,它支持在 GSM 核心网中对 GPRS 的使用。所有的 GSN 都应当拥有一个 接口,并支持 GPRS 隧道协议。GSN 有两个关键的变种,即网关(gateway)和业务(service)GPRS 支撑节点。IMEI-- 国际移动设备识别码。(GSM) IMSI-- 国际移动用户识别码。储存在用户的 SIM 卡内,和 GSM 系统存储器中,以便系统识别任何唯一的移动台。(GSM)MSC-- 移动交换中心,应用在数字蜂窝系统中,移动用户、PSTN 以及其他移动交换中和移动用户通过 MTS 产生联结。SN--Serial Number 的缩写,有时也叫 SerialNo,也就是产品序列号,产品序列是为了验证产品的合法身份” 而引入的一个概念,它是用来保障用户的正版权益,享受合法服务的。HLR-- 归属位置寄存器。(GSM)VLR-- 拜访位置寄存器。(GSM)ISDN-- 综合业务数字网。OPERATOR-- 运营者。PDP-- Packet Data Protocol,分组数据协议,是外部 PDN 网与 GPRS 接口所用的网络协议。PDN--Pubic Data Network,公用数据网,一种由电信运营商组建的广域网,提供接入广域网的服务与技术,为用户提供高质量数据传输服务。PSPDN-- 公用分组交换数据网。SMS--short message services-- 短消息业务。SIM-- 用户识别码。X.25-- 分组交换网内的一种通信协议。1976 年批准,并多次修改,一般用于 ISDN 的分组交换中。包括三个层:物理层,链路层,分组层。对应于 OSI 模型的最低三层。GPRS 网络结构图 1 GPRS 的原理结构图 GPRS 网络引入了分组交换和分组传输的概念,使得 GSM 网络对数据业务的支持上得到了加强,它是通过在 GSM 网络上增加 GGSN 和 SGSN 来实现的,GGSN 和 SGSN 分别表示 GPRS 网关支持节点和 GPRS 服务支持节点。 GPRS 网络分为无线接入和核心网络两个部分,无线接入部分是在移动台(MS)与基站子系统(BSS)之间传输数据,核心网络在 BSS 与标准数据通信网边界网关之间中继传输数据。按 GSM 规范提出的基本结构,BSS 由两个基本部分组成:通过无连接口与移动台一侧相连的基站收、发信机(BTS)和与交换机一侧相连的基站控制器(BSC)。 GSN 是 GPRS 网络中最重要的网络节点。GSN 具有移动路由管理功能,它可以连接各种类型的数据网络,并可以连到 GPRS 寄存器。GSN 可以完成移动台和各种数据网络之间的数据传送和格式转换。GSN 可以是一种类似于路由器的独立设备,也可以与 GSM 中的 MSC 集成在一起。 GSN 有两种类型:一种为 SGSN(Serving GSN,服务 GSN),另一种为 GGSN(Gateway GSN,网关 GSN),SGSN 的主要作用是记录移动台的当前位置信息,并且在移动台和 GGSN 之间完成移动分组数据的发送和接收。GGSN 主要是起网关作用,它可以和多种不同的数据网络连接,如 ISDN、PSPDN 和 LAN 等。有的文献中,把 GGSN 称为 GPRS 路由器。GGSN 可以把 GSM 网中的 GPRS 分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的 TCP/IP 或 X.25 网络。 另外,有的厂商提出了 GR(GSM Register,GPRS 数据库)的概念。GR 类似于 GSM 中的 HLR,是 GPRS 业务数据库。它可以独立存在,也可以和 HLR 共存,由服务器或程控交换机实现。GR 这个名称在 ETSI 的建议中没有专门提及。GPRS 工作原理 GPRS 网络的工作原理体现在它的分组数据路由传输和传输协议模式上,用户通讯数据通过串行或无线方式连接到 GPRS 终端上,然后 GPRS 终端与 GSM 基站通信,这种方式与电路交换式数据呼叫不同,GPRS 分组是从基站发送到 GPRS 服务支持节点(SGSN),而不是通过移动交换中心(MSC)连接到语音网络上。因此,SGSN 与 GPRS 网关支持节点(GGSN)进行通信,GGSN 对分组数据进行相应的处理后,再发送到目的网络,如 Internet 或 X.25 网络。如图 1 所示,其具体的数据传输流程分为四步:第一步:用户设备通过串行接口向 GPRS 终端传输数据;第二步:经过处理后的 GPRS 分组数据发送到 GSM 基站;第三步:分组数据经 GSM 基站的 SGSN 封装后,然后发送到 GPRS 骨干网;第四步:在 GPRS 网关支持节点 GGSN 对 SGSN 分组数据进行相应的处理后,再发送到目的网络移动台(MS),和 GPRS 之间的分层传输协议模型主要由 GTP LLC 和 RLC 协议构成,Um 接口是 GSM 的空中接口,Um 接口上的通信协议有 5 层,自下而上依次为物理层、MAC 层、 LLC 层、SNDC 层和网络层,RLC/MAC 为无线链路控制、媒质接入控制层,LLC 层为逻辑链路控制层,GTP 是将用户数据及信令用隧道技术在 GPRS 网络 GSN 节点之间传送。GPRS 协议模型 Um 接口是 GSM 的空中接口。Um 接口上的通信协议有 5 层,自下而上依次为物理层、MAC Medium Access Control)层、LLC(Logical Link Control)层、SNDC(Sub network Dependant Convergence)层和网络层。 Um 接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM 空中接口的载频带宽为 20OkHz,一个载频分为 8 个物理信道。如果 8 个物理信道都分配为传送 GPRS 数据,则原始数据速率可达 20Okb/s。考虑前向纠错码的开销,则最终的数据速率可达 164kb/s 左右。 MAC 为媒质接入控制层。MAC 的主要作用是定义和分配空中接口的 GPRS 逻辑信道,使得这些信道能被不同的移动台共享。GPRS 的逻辑信道共有 3 类,分别是公共控制信道、分组业务信道和 GPRS 广播信道。公共控制信道用来传送数据通信的控制信令,具体又分为寻呼和应答等信道。分组业务信道用来传送分组数据。广播信道则是用来给移动台发送网络信息。 LLC 层为逻辑链路控制层。它是一种基于高速数据链路规程 HDLC 的无线链路协议。LLC 层负责在高层 SNDC 层的 SNDC 数据单元上形成 LLC 地址、帧字段,从而生成完整的 LLC 帧。另外,LLC 可以实现一点对多点的寻址和数据帧的重发控制。 BSS 中的 LLR 层是逻辑链路传递层。这一层负责转送 MS 和 SGSN 之间的 LLC 帧。LLR 层对于 SNDC 数据单元来说是透明的,即不负责处理 SNDC 数据。SNDC 被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定 TCP/IP 地址和加密方式。在 SNDC 层,移动台和 SGSN 之间传送的数据被分割为一个或多个 SNDC 数据包单元。SNDC 数据包单元生成后被放置到 LLC 帧内。 网络层的协议目前主要是 Phase 1 阶段提供的 TCP/IP 和 L25 协议。TCP/IP 和 X.25 协议对于传统的 GSM 网络设备(如 BSS 和 NSS 等设备)是透明的。 在 GPRS 网络传输中,常用的有两种传输协议,即 TCP 和用户数据报协议 UDP 它们都是使用 IP 作为网络层协议,每组数据都通过端系统和每个中间路由器中的 IP 层在互联网中进行传输 TCP 主要负责把应用程序交给它的数据分成合适的小块然后再交给下面的网络层 确认接收到的分组 设置发送最后确认分组的超时时钟等,是为两台主机提供高可靠性的数据通信。 UDP 协议与 TCP 协议最大的不同表现在数据传输的可靠性上,UDP 协议是一种不可靠的或最尽力的协议,它本身不提供可靠的数据传输,但并不意味着在 UDP 协议之上就不能有可靠的数据传输 在网络传输中使用 UDP 协议的应用程序要负责实施重传 过滤多余信息等等 如果一个 UDP 包在传输过程中丢失或者损坏,需要引起发送数据的应用程序注意才行 TCP 协议和 UDP 协议各有优势,工业监控系统中究竟是采用 TCP 协议还是 UDP 协议,可以根据实际条件和技术水平来综合考虑。GPRS 连接过程详解 MS 在附着过程中,通过 BSC 系统的 PCU 模块进行接入控制和信道分配,通过 SGSN 和 HLR 进行鉴权管理,并从 HLR 中获得用户的签约信息,最终在 MS、HLR 与 SGSN 内部形成有关用户的移动管理信息,此时 MS 通过 HLR 系统完成鉴权,位置更新等过程,最后由 HLR 通过 GR 接口信令向 SGSN 发送鉴权三元组,完成附着。 当 MS 完成附着后,它将在 RLC/MAC 层使用 TLLI 作为身份标识,这时 MS 进入 READY 状态,并在 MS 和 SGSN 中建立起 MM 上下文,之后 MS 才可以发起 PDP 上下文激活过程,在这个时刻以前的所有过程的成功与否均与 PDP 没有关系。即是用户在附着过程中,主要涉及无线系统、如 PCU、无线信道、SGSN 和 HLR 等业务单元,而与 GGSN 无关。 PDP 激活作为 GPRS 通信过程中第二个重要的过程,在该过程中涉及中 DNS 号段解析、DHCP 地址分配、radius 认证过程等重要过程。当 PDP 激活成功后,手机可以获得 IP 地址,系统开始形成计费话单,用户将进入通信前的临界状态。 PDP 上下文包含与某个 APN 相关的地址映射以及路由信息。目前在我省主要的 APN 应用由 WAP、NET 以及今后的行业 VPDN 应用,这些特定的应用均有相对应的 IP 地址网段、路由信息与之相匹配。MS 通过激活 PDP 上下文得到 GGSN 系统分配的动态 IP 地址后完成数据接入工作。所以 MS 能否正常从 GGSN 系统获得 IP 地址是 PDP 成功激活的关键所在。 DNS 系统解析是否成功直接关系到 PDP 激活是否成功。 GPRS 通信全过程包含 ATTACH 和 PDP 两个子过程。GPRS 的应用 --TCP/IP/PPP 实际上 GPRS DTU 上实现的是协议栈是 TCP/IP Over PPP。 每一次 GSM 模块拨 ATD99**1# 之后其实都在采用 PPP 协议和移动的接入设备(一般是移动公司的一台特殊的 GGSN 路由器)进行握手,当 PPP 协议握手成功后,GSM 模块都会获得一个动态 IP 地址。一般来说,每一次 GSM 模块下线后(挂断连接或者直接断电后)在重新进行拨号和 PPP 握手后取得的动态 IP 地址都是不一样的。但是移动公司可以通过为客户开通特定的 APN 和发行特殊的 SIM 卡,使得用这张 SIM 卡获得的动态 IP 地址每一次都不变。也就是说可以做到 SIM 卡和 IP 地址绑定。 在采用公网的 Apn(“cmnet”)的条件下,如果我们用 GSM 模块主动向公网上的一个静态公网 IP 地址发起 TCP 连接,只要这个公网上的机器确实有侦听相应的端口,这样是可以连上的; 但是相反地,如果是由公网上的静态 IP 向 GSM 模块动态获得的 IP 地址主动发起的 TCP 连接将不会成功。这个现象的原因是:实际上 GSM 模块获得的动态 IP 地址是移动的一个特殊的内部网段上的地址,这个特殊内部网段里的地址如果要和外部网(公网)的地址进行 TCP 通信,必须通过一个类似于 TCP 代理(或者 NAT)的设备进行通信的转发。换句话说,这个动态地址对于网络上的其他机器来说是不可访问的。 确定一条 TCP 连接有 4 个要素,这 4 个要素是双方的 IP 地址和双方的 TCP 端口号。在使用 TCP 协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段。GPRS 相关 AT 指令集GPRS 指令AT+CGATT=1 // 返回 OK,附着网络AT+CGACT=1,1 // 激活网络,之后就可以使用 tcpip 的指令了TCP/IP 指令AT+CIPSTART="TCP","121.41.97.28",60000 // 连接 TCPIP 服务器AT+CIPSEND=20 // 返回 >, 就可以输入要发送的内容 20 表示有 20 个字节AT+CIPCLOSE // 关闭 TCPIP 连接+CIPRCV:5,12345 // 收到服务器返回的 5 个字节多路 TCP/IP 连接指令AT+CGDCONT=1,"IP","cmnet" // 设置 PDP 参数AT+CGACT=1,1 // 激活 PDPAT+CIPSTATUS? // 查询 ip 连接情况,共有 8 路,实际最多支持同时开 4 路 tcpip 连接 AT+CIPCLOSE // 关闭该链路AT+CIPMUX? // 查询是否开启多连接AT+CIPMUX=1 // 开启多链接AT+CGPADDR // 显示 PDP 地址ATD99**1# // 请求 GPRS 服务GPRS 网络优势GPRS 技术可以令您在任何时间、任何地点都能快速方便地实现连接网络,同时费用又很合理。简单地说:速度上去了,内容丰富了,应用增加了,而费用却更加合理。1) 永远在线性2) 支持 IP 协议和 X.25 协议3) 支持多种数据应用4) 资源利用率高(分组交换的传输方式)5) 移动和分布的灵活性6) 按流量收费
2022年12月29日
17 阅读
0 评论
0 点赞
2022-12-27
VDD、VCC、VSS、VEE、VPP啥啥啥
VDD:电源电压(单极器件);电源电压(4000系列数字电 路);漏极电压(场效应管)VCC:电源电压(双极器件);电源电压(74系列数字电路);声控载波(Voice Controlled Carrier)VSS:地或电源负极VEE:负电压供电;场效应管的源极(S)VPP:编程/擦除电压。详解:在电子电路中,VCC是电路的供电电压, VDD是芯片的工作电压:VCC:C=circuit 表示电路的意思, 即接入电路的电压, D=device 表示器件的意思, 即器件内部的工作电压,在普通的电子电路中,一般Vcc > Vdd !VSS:S=series 表示公共连接的意思,也就是负极。有些IC 同时有VCC和VDD, 这种器件带有电压转换功能。在“场效应”即COMS元件中,VDD乃CMOS的漏极引脚,VSS乃CMOS的源极引脚, 这是元件引脚符号,它没有“VCC”的名称,你的问题包含3个符号,VCC / VDD /VSS, 这显然是电路符号。
2022年12月27日
12 阅读
0 评论
0 点赞
2022-12-19
UART、TTL、RS232、RS485、IIC、SPI、USB、RJ45 傻傻分不清
先说结果:分类:物理层协议(设计工艺):usb、ttl、rs232、rs485、rj45软件协议:urat、iic(i2c)、spi通信里面的常见概念太多,例如UART、TTL、RS232、RS485、IIC、SPI、USB、RJ45等等,要想搞懂它们都是啥,对它们进行一个很好的分类是很重要的。在分类之前,我们需要先讲几个基本概念。首先解释一下通信,对于有线通信来说,所谓通信就是在导线上传输电信号。有线通信主要分两种,串行和并行。常见的接口中,USB是串行,PCI是并行。它们的主要区别在于01数据是一次传一个还是一次传多个。串行通信主要又分成两种,同步通信和异步通信。主要区别在于同步通信要利用时钟信号确定信息,而异步通信是通过约定传输速率并在将要传输的数据中增加冗余信息从而识别出信息的开始和结束位置。IIC(I²C)和SPI都属于同步通信,UART和USB属于异步通信,事实上UART就是Universal Asynchronous Receiver/Transmitter(通用异步收发传输器)的缩写。本文主要讨论的是异步串行通信里的相关概念。在开始讨论之前,我还想说明一下,虽然通信就只是在导线上传输电信号,但它有几个关键点:线材(是用铜还是其他金属?)及线材的组织方式(双绞线那样的还是同轴电缆那样的或者其他?)和两端接口的形状(例如同是8根线的Lightning和RJ45接口)。一些电气特性,例如01怎么代表(用多大的电压?),怎么传输(管脚定义?是用单端信号还是差分信号?),即一些物理层面的协议。传输的01信号是怎么代表有用的信息的,即软件层面的协议。考虑了以上内容之后,我们就可以对标题中的概念进行解释了。我们在讨论开发板上的串口时,常见的不外乎有UART、TTL、RS232这几个概念,其实很容易把它们说明白:UART其实是一种软件层面的协议,定义了我们的信息要怎么组织封装成一串01序列。TTL本身是指一种集成电路的设计工艺,而我们常说的TTL指的是TTL电路的电平标准,可以认为是一种物理层面的协议,但它只定义了表示01所使用的电压,没有定义怎么传输。通常有5V和3.3V两种。RS232的内容多一些,物理层面的内容基本都定义了,具体可以查看wiki。RS232通常使用DE-9的D-sub接口,内部的数据通常采用UART协议。类似地,再分析USB。USB这个概念比较庞大,不仅定义了接口形状和物理层面的协议,软件层面的协议也一并定义了。也可以说是USB把这些内容都纳入到了一个概念内。所以,UART就是串口协议的一种,RS232是物理层的标准。所以说UART里只有01但没有电压这么一说。一般板子会把通过URAT协议组织好的01信号用TTL电平标准直接输出,这相当于一个原始的信号。之所以说它是个原始的信号是因为这里面是没有什么线材标准之说的,只定义了01相对应的电压大小,连接也是直接用导线连出来。不过,我们也可以处理一下这个信号,做成符合RS232接口标准的RS232接口进行输出。类似地,虽然UART最常用TTL和RS232,实际上还有其他很多接口仍在使用,做成这些接口也是可以的,例如传输差分信号的RS485,甚至是常用于以太网口的RJ45接口。一个题外话,关于RS232目前常用的接口形状的名称究竟是DE-9还是DB-9的问题,wiki上有解释:However, this naming pattern is not always followed. Because personal computers first used DB-25 connectors for their serial and parallel ports, when the PC serial port began to use 9-pin connectors, they were often labeled as DB-9 instead of DE-9 connectors, due to an ignorance of the fact that B represented a shell size. It is now common to see DE-9 connectors sold as DB-9 connectors. DB-9 nearly always refers to a 9-pin connector with an E size shell.–https://en.wikipedia.org/wiki/D-subminiature大意就是RS232最初用的是DB-25接口,后来PC上广泛使用9针接口来替代25针,一些人不知道DB-25中的B指的是接口外壳大小,把DB当成整体了,于是直接把25改成了9,认为它是DB-9。但实际上这个9针接口的外壳类型是E,是DE-9接口。因此现在所说的DB-9几乎指的都是DE-9。再详细一点,举个例子,有个比较常见的说法:“这个开发板上的串口是TTL接口,我们可以用USB转TTL的转接头把它连到电脑上,比较常见的是使用PL2303芯片的转接头”。我们来分析下这句话。“开发板上的串口是TTL接口”在本质上通常指的是开发板上引出的几个管脚,它使用TTL电压标准输出串行数据,协议通常是UART,相当于一种RAW信号。一个USB to TTL转接头的作用是把这个RAW的UART数据使用USB协议封装后传到PC上,可以理解成UART over USB。有些开发版上直接就有RS232接口,如果PC上也有RS232口,那就可以直接连接。其实如果PC有RS232的话,也可以用TTL to RS232转接头转换,常用的芯片是MAX3232。但这里面就只涉及到电压转换的问题了,没有数据的改变和封装,不像USB to TTL,还要借助USB协议。当然,TTL输出的数据除了UART,也可以采用IIC、SPI等协议。但由于PC硬件上不自带支持,因此在PC上想使用这些协议就会比较麻烦,于是一般用的都是UART。讲了这么多,最后还是要深入浅出一下。所以,一句话总结一下就是:不同层面的东西可以自由选取,因此可以选择采用不同的搭配方式;但有一些因为历史或者为了方便使用等等原因,形成了一些固定的搭配。只要我们理解了这一点,并对概念清晰地归类,就可以从更高的角度看待它们。
2022年12月19日
12 阅读
0 评论
0 点赞
2022-12-19
IIC、URAT、SPI的认识
本文由 简悦 SimpRead 转码, 原文地址 zhuanlan.zhihu.com电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。之前有单独地分享了 SPI、UART、I2C 通信的文章,这篇对它们做一些对比。串行 VS 并行电子设备通过发送数据位从而实现相互交谈。位是二进制的,只能是 1 或 0。通过电压的快速变化,位从一个设备传输到另一个设备。在以 5V 工作的系统中,“0”通过 0V 的短脉冲进行通信,而 “1” 通过 5V 的短脉冲进行通信。数据位可以通过并行或串行的形式进行传输。在并行通信中,数据位在导线上同时传输。下图显示了二进制(01000011)中字母 “C” 的并行传输:在串行通信中,位通过单根线一一发送。下图显示了二进制(01000011)中字母 “C” 的串行传输:SPI 通信SPI 是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量的位。而在 I2C 和 UART 中,数据以数据包的形式发送,有着限定位数。在 SPI 设备中,设备分为主机与从机系统。主机是控制设备(通常是微控制器),而从机(通常是传感器,显示器或存储芯片)从主机那获取指令。一套 SPI 通讯共包含四种信号线:MOSI (Master Output/Slave Input) – 信号线,主机输出,从机输入。MISO (Master Input/Slave Output) – 信号线,主机输入,从机输出。SCLK (Clock) – 时钟信号。SS/CS (Slave Select/Chip Select) – 片选信号。SPI 协议特点实际上,从机的数量受系统负载电容的限制,它会降低主机在电压电平之间准确切换的能力。工作原理时钟信号每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。时钟信号由于是主机配置生成的,因此 SPI 通信始终由主机启动。 设备共享时钟信号的任何通信协议都称为同步。SPI 是一种同步通信协议,还有一些异步通信不使用时钟信号。例如在 UART 通信中,双方都设置为预先配置的波特率,该波特率决定了数据传输的速度和时序。片选信号主机通过拉低从机的 CS/SS 来使能通信。 在空闲 / 非传输状态下,片选线保持高电平。在主机上可以存在多个 CS/SS 引脚,允许主机与多个不同的从机进行通讯。如果主机只有一个片选引脚可用,则可以通过以下方式连接这些从器件:MOSI 和 MISO主机通过 MOSI 以串行方式将数据发送给从机,从机也可以通过 MISO 将数据发送给主机,两者可以同时进行。所以理论上,SPI 是一种全双工的通讯协议。传输步骤 1. 主机输出时钟信号主机拉低 SS / CS 引脚,激活从机主机通过 MOSI 将数据发送给从机如果需要响应,则从机通过 MISO 将数据返回给主机使用 SPI 有一些优点和缺点,如果在不同的通信协议之间进行选择,则应根据项目要求进行充分考量。优劣优点SPI 通讯无起始位和停止位,因此数据可以连续流传输而不会中断;没有像 I2C 这样的复杂的从站寻址系统,数据传输速率比 I2C 更高(几乎快两倍)。独立的 MISO 和 MOSI 线路,可以同时发送和接收数据。缺点SPI 使用四根线(I2C 和 UART 使用两根线),没有信号接收成功的确认(I2C 拥有此功能),没有任何形式的错误检查(如 UART 中的奇偶校验位等)。UART 代表通用异步接收器 / 发送器也称为串口通讯,它不像 SPI 和 I2C 这样的通信协议,而是微控制器中的物理电路或独立的 IC。UART 的主要目的是发送和接收串行数据,其最好的优点是它仅使用两条线在设备之间传输数据。UART 的原理很容易理解,但是如果您还没有阅读 SPI 通讯协议,那可能是一个不错的起点。UART 通信在 UART 通信中,两个 UART 直接相互通信。发送 UART 将控制设备(如 CPU)的并行数据转换为串行形式,以串行方式将其发送到接收 UART。只需要两条线即可在两个 UART 之间传输数据,数据从发送 UART 的 Tx 引脚流到接收 UART 的 Rx 引脚:UART 属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收 UART 知道何时读取这些数据。当接收 UART 检测到起始位时,它将以特定波特率的频率读取。波特率是数据传输速度的度量,以每秒比特数(bps)表示。两个 UART 必须以大约相同的波特率工作,发送和接收 UART 之间的波特率只能相差约 10%。工作原理发送 UART 从数据总线获取并行数据后,它会添加一个起始位,一个奇偶校验位和一个停止位来组成数据包并从 Tx 引脚上逐位串行输出,接收 UART 在其 Rx 引脚上逐位读取数据包。UART 数据包含有 1 个起始位,5 至 9 个数据位(取决于 UART),一个可选的奇偶校验位以及 1 个或 2 个停止位:起始位:UART 数据传输线通常在不传输数据时保持在高电压电平。开始传输时发送 UART 在一个时钟周期内将传输线从高电平拉低到低电平,当接收 UART 检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。数据帧:数据帧内包含正在传输的实际数据。如果使用奇偶校验位,则可以是 5 位,最多 8 位。如果不使用奇偶校验位,则数据帧的长度可以为 9 位。校验位:奇偶校验位是接收 UART 判断传输期间是否有任何数据更改的方式。接收 UART 读取数据帧后,它将对值为 1 的位数进行计数,并检查总数是偶数还是奇数,是否与数据相匹配。停止位:为了向数据包的结尾发出信号,发送 UART 将数据传输线从低电压驱动到高电压至少持续两位时间。传输步骤发送 UART 从数据总线并行接收数据:发送 UART 将起始位,奇偶校验位和停止位添加到数据帧:整个数据包从发送 UART 串行发送到接收 UART。接收 UART 以预先配置的波特率对数据线进行采样:接收 UART 丢弃数据帧中的起始位,奇偶校验位和停止位:接收 UART 将串行数据转换回并行数据,并将其传输到接收端的数据总线:优劣没有任何通信协议是完美的,但是 UART 非常擅长于其工作。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:优点仅使用两根电线无需时钟信号具有奇偶校验位以允许进行错误检查只要双方都设置好数据包的结构有据可查并得到广泛使用的方法缺点数据帧的大小最大为 9 位不支持多个从属系统或多个主系统每个 UART 的波特率必须在彼此的 10%之内I2C 通信I2C 总线是由 Philips 公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可传送信息。它结合了 SPI 和 UART 的优点,您可以将多个从机连接到单个主机(如 SPI 那样),也可以使用多个主机控制一个或多个从机。当您想让多个微控制器将数据记录到单个存储卡或将文本显示到单个 LCD 时,这将非常有用。SDA (Serial Data) – 数据线。SCL (Serial Clock) – 时钟线。I2C 是串行通信协议,因此数据沿着 SDA 一点一点地传输。与 SPI 一样,I2C 也需要时钟同步信号且时钟始终由主机控制。工作原理 I2C 的数据传输是以多个 msg 的形式进行,每个 msg 都包含从机的二进制地址帧,以及一个或多个数据帧,还包括开始条件和停止条件,读 / 写位和数据帧之间的 ACK / NACK 位:启动条件:当 SCL 是高电平时,SDA 从高电平向低电平切换。停止条件:当 SCL 是高电平时,SDA 由低电平向高电平切换。地址帧:每个从属设备唯一的 7 位或 10 位序列,用于主从设备之间的地址识别。读 / 写位:一位,如果主机是向从机发送数据则为低电平,请求数据则为高电平。ACK/NACK:消息中的每个帧后均带有一个 ACK/NACK 位。如果成功接收到地址帧或数据帧,接收设备会返回一个 ACK 位用于表示确认。寻址由于 I2C 没有像 SPI 那样的片选线,因此它需要使用另一种方式来确认某一个从设备,而这个方式就是 —— 寻址 。主机将要通信的从机地址发送给每个从机,然后每个从机将其与自己的地址进行比较。如果地址匹配,它将向主机发送一个低电平 ACK 位。如果不匹配,则不执行任何操作,SDA 线保持高电平。读 / 写位地址帧的末尾包含一个读 / 写位。如果主机要向从机发送数据,则为低电平。如果是主机向从机请求数据,则为高电平。数据帧当主机检测到从机的 ACK 位后,就可以发送第一个数据帧了。数据帧始终为 8 位,每个数据帧后紧跟一个 ACK / NACK 位,来验证接收状态。当发送完所有数据帧后,主机可以向从机发送停止条件来终止通信。传输步骤 1. 在 SCL 线为高电平时,主机通过将 SDA 线从高电平切换到低电平来启动总线通信。主机向总线发送要与之通信的从机的 7 位或 10 位地址,以及读 / 写位:每个从机将主机发送的地址与其自己的地址进行比较。如果地址匹配,则从机通过将 SDA 线拉低一位返回一个 ACK 位。如果主机的地址与从机的地址不匹配,则从机将 SDA 线拉高。主机发送或接收数据帧:传输完每个数据帧后,接收设备将另一个 ACK 位返回给发送方,以确认已成功接收到该帧:随后主机将 SCL 切换为高电平,然后再将 SDA 切换为高电平,从而向从机发送停止条件。单个主机 VS 多个从机由于 I2C 使用寻址功能,可以通过一个主机控制多个从机。使用 7 位地址时,最多可以使用 128(27) 个唯一地址。使用 10 位地址并不常见,但可以提供 1,024(210) 个唯一地址。如果要将多个从机连接到单个主机时,请使用 4.7K 欧的上拉电阻将它们连接,例如将 SDA 和 SCL 线连接到 Vcc:多个主机 VS 多个从机I2C 支持多个主机同时与多个从机相连,当两个主机试图通过 SDA 线路同时发送或接收数据时,就会出现问题。因此每个主机都需要在发送消息之前检测 SDA 线是低电平还是高电平。如果 SDA 线为低电平,则意味着另一个主机正在控制总线。如果 SDA 线高,则可以安全地发送数据。如果要将多个主机连接到多个从机,请使用 4.7K 欧的上拉电阻将 SDA 和 SCL 线连接到 Vcc:优劣与其他协议相比,I2C 可能听起来很复杂。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:优点仅使用两根电线支持多个主机和多个从机每个 UART 的波特率必须在彼此的 10%之内硬件比 UART 更简单众所周知且被广泛使用的协议缺点数据传输速率比 SPI 慢数据帧的大小限制为 8 位内容来源网络,侵删!
2022年12月19日
11 阅读
0 评论
0 点赞
2022-08-05
arm 9005x 风扇控温脚本
#!/bin/bash sj_temp_pid="$(cat /var/run/sj_temp.pid 2>/dev/null)" get_name="$(cat /proc/$sj_temp_pid/comm 2>/dev/null)" # 这个其实是if else的语法糖 [] 为判断条件 && 内是成功的处理逻辑 ||内是失败的处理逻辑,当然,可以只有&& 即成功的处理逻辑 [ "$get_name" = "${0##*\/}" ]&&{ echo "脚本已经执行,请勿重复执行……" exit 0 } # 温度获取地址的获取 [ -r /sys/class/hwmon/hwmon0/temp1_input ]&&tempfile="/sys/class/hwmon/hwmon0/temp1_input" # 温度获取地址的获取 [ -r /sys/class/thermal/thermal_zone0/temp ]&&tempfile="/sys/class/thermal/thermal_zone0/temp" # 获取到当前风扇的gpio的引脚定义(两脚的话只有开关,四pin的话会有转速控制) [ -L /sys/class/gpio/gpiochip501 ]&&gpio_id=504||gpio_id=148 { #保存当前脚本的pid,用于开头的文件是否运行的检测 echo "$BASHPID" >/var/run/sj_temp.pid [ "$(cat /sys/class/thermal/cooling_device1/type)" = "gpio-fan" ]&&statusfile="/sys/class/thermal/cooling_device1/cur_state"||{ #获取好风扇状态的文件配置地方 statusfile="/sys/class/gpio/gpio$gpio_id/value" echo "$gpio_id" >/sys/class/gpio/export # 设置风扇方向 echo "out" >/sys/class/gpio/gpio$gpio_id/direction # 设置风扇状态 echo "0" >/sys/class/gpio/gpio$gpio_id/value } # 循环执行 while : do # 先获取到当前的cpu温度 cpu_temp=$(cat $tempfile) # 再获取到当前风扇的状态,没有先后顺序哈这俩 f_status=$(cat $statusfile) # 这个其实是if else的语法糖 [] 为判断条件 && 内是成功的处理逻辑 ||内是失败的处理逻辑,意思为cpu温度超过了60000 就打开风扇,小于50000就关闭风扇,中间的差值防止风扇反复横跳,留个缓冲区。 [ "$cpu_temp" -ge "60000" -a "$f_status" = "0" ]&&echo "1" >$statusfile [ "$cpu_temp" -lt "50000" -a "$f_status" = "1" ]&&echo "0" >$statusfile sleep 10 done } >/dev/null 2>&1 &
2022年08月05日
8 阅读
0 评论
0 点赞
1
2
3