首页 > 其他分享 >单总线协议

单总线协议

时间:2023-11-12 22:46:38浏览次数:41  
标签:协议 读写 dev 单总线 gpio App eeprom

单总线线(1-wire)是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,它采用单根信号线,在主机和从机之间通信。
常见的w1芯片:at21cs01,ds18b20,ds28e05等。

1. 驱动

基于zynq7020采用gpio方式模拟读写at21cs01器件。

1.1 基础信息

gpio: PS_MIO11, 即板卡上PS_KEY1。

电路: 上拉电阻 1K

设备号:major 244, minor 0 (系统分配的设备号,可能变化)

设备文件: /dev/eeprom

设备树节点:

        eeprom_gpio {
                compatible = "canaan,eeprom-gpio";
                status = "okay";
                eeprom-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
                reg = <0xE000A040 0x4
                        0xE000A060 0x4
                        0xE000A204 0x4
                        0xE000A208 0x4
                        0xE000A214 0x4
                        0xF800012C 0x4
                        >;
        };

1.2 特殊处理的问题

  1. arm linux延迟ns实际采用的是us,延迟1us实测延迟接近2us(lpj计算延迟)。
  2. 读写字节时关中断,否则可能时序错误。
  3. 读写数据芯片没有响应时应重试。
  4. 读写数据时偶尔数据异常,时序错误,采用标准速度操作at21cs01。

1.3 程序控制

#define DDEVICE_SPEED_STD		0			/* 标准速度还是高速,标准速度为1, 高速为0 */
#define DDEVICE_GPIO_MODE_REG	        0			/* 使用GPIOLIB方式还是直接读写寄存器,REG:1,GPIOLIB:0 */
#define DDEVICE_RW_RETRIES		5			/* 读写最大尝试次数, 最小为1 */	

通过3个宏可分别控制读写速度模式、读写方式和读写尝试次数。

2. 测试

insmod eeprom.ko

./App /dev/eeprom [read_times]

./App /dev/eeprom
./App /dev/eeprom 100
./App /dev/eeprom 1000

测试结果:

多次读写128bytes测试,偶尔有读取数据错误发生。时序错误导致。

采用标准速度读写128bytes时,多次1000次读测试无问题。

参考

  1. 美信DS28E05单总线EEPROM通信方式详解(以STM32F030为例)
  2. 单总线协议及LINUX DS18B20驱动
  3. Linux驱动开发:基于全志A40i的Linux单总线驱动的开发
  4. W1: Dallas’ 1-wire bus - kernel
  5. 学习温度传感器ds18b20的驱动编写过程
  6. w1-slaves-kconfig
  7. kernel(十三)1-wire (DS18B20)

标签:协议,读写,dev,单总线,gpio,App,eeprom
From: https://www.cnblogs.com/embedded-linux/p/17828048.html

相关文章

  • 【低功耗蓝牙BLE-2】Generic Access Profile(GAP)协议
    原文链接:https://zhuanlan.zhihu.com/p/527434096?utm_id=0 GAP简介通用访问配置文件(GAP)规定了设备在较低级别如何执行控制程序,如设备发现、连接、安全建立等,以确保互操作性,并允许来自不同供应商设备之间的通信。主要的操作有:发现并与配对广播数据建立安全连接GAP以一......
  • 职场小白必备知识点-VRRP协议
    文档说明本文主要介绍VRRP的产生背景和实现方式,并结合华为的VRP平台列举了实现VRRP功能的典型组网方式及配置。各个厂商最主要的区别体现在配置和实现方式,原理都是原理都差不多的。测试过程随着Internet的发展,人们对网络可靠性的要求越来越高。特别是对于终端用户来说,能够时时......
  • b站直播间 ws协议爬取
    挺简单的let{brotliDecompressSync}=require("zlib");varwsBinaryHeaderList=[{"name":"HeaderLength","key":"headerLen","bytes":2,"offset":4,"value&qu......
  • 网络协议分析——实验九使用Wireshark分析TCP协议
    网络协议分析——实验九使用Wireshark分析TCP协议文章在线:https://www.cnblogs.com/rabbit-dayi/p/17826075.htmlhttps://type.dayiyi.top/index.php/archives/246/https://blog.dayi.inkhttps://cmd.dayi.ink/mXYpwNZfQXSEJWKHCoYAFg?both实验目的本实验旨在使用Wiresh......
  • 协议分析11 RIP
    协议分析11RIP更好的阅读体验:https://type.dayiyi.top/index.php/archives/248/https://blog.dayi.ink/?p=98https://cnblogs.cn/rabbit-dayihttps://cmd.dayi.ink/nKnLEJJuQACUW2qAPCjbAQ让我R.I.P,吧,11个作业。插电,开机步骤和要求1)选择样例中的RIPv1&v2,打开网络拓......
  • 项目正式——基于ftp协议的文件传输
    基于ftp协议的文件传输系统-业务需求基于ftp协议的文件传输系统-业务需求用门例子来举例配置ftp服务见文档手工执行ftp命令需要两个用户一个作为服务器一个作为客户端来访问输入用户和密码大概面临封装ftp客户端下载ftplib.hlib.cpp文件并且编译成库![image]并且......
  • 车联网场景中的MQTT协议应用
    基本概念解释MQTT解释MQTT(MessageQueuingTelemetryTransport)是一种轻量级、基于TCP/IP协议栈构建的异步通信,和发布-订阅模式的消息传输协议。适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信......
  • 【虹科干货】TWAMP:什么是双向主动测量协议?
    TWAMP(双向主动测量协议)是什么?它在网络性能测量中有什么作用?如果您对IP网络中设备之间的性能问题感兴趣,或者想了解TWAMP与OWAMP之间的区别,以及TWAMP测试的好处。 一、TWAMP是什么?TWAMP代表“双向主动测量协议”,如RFC5357中所述,它是一种用于测量IP网络中任意两个设备或端点之间的网......
  • 怎么通过LiveNVR流媒体平台配置实现将海康Ehome、ISUP协议统一接入实现Web无插件播放
    @目录1、海康ISUP接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例3、通道配置3.1、直播流接入类型海康ISUP3.2、海康ISUP设备ID3.3、启用保存3.4、接入成功4、相关问题4.1、其它方式接入4.2、如何输出GB281815、RTSP/HLS/FLV/RTMP拉流Onvif流媒......
  • linux MAC/IPV4/IPV6/网际互连/网关/网桥全面介绍,TCP/IP协议族模型、TCP/IP传输层协
    鱼弦:内容合伙人、新星导师、全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) Linux是一种自由和开放源代码的类Unix操作系统。它支持多种网络协议,其中包括TCP/IP协议族。在本回答中,我将介绍L......