当前位置: 首页 > news >正文

齐诺网站建设有哪些平台可以做推广

齐诺网站建设,有哪些平台可以做推广,单位网站怎么做,js网站登录怎么做参考链接:I2c协议 Linux I2C应用编程开发 问题背景 在工作中需要测试I2C总线的传输稳定性,需写一个测试程序通过读写从设备寄存器的值来验证数据传输稳定性。 站在cpu的角度来看,操作I2C外设实际上就是通过控制cpu中挂载该I2C外设的I2C控制…

参考链接:I2c协议
Linux I2C应用编程开发

问题背景

在工作中需要测试I2C总线的传输稳定性,需写一个测试程序通过读写从设备寄存器的值来验证数据传输稳定性。

站在cpu的角度来看,操作I2C外设实际上就是通过控制cpu中挂载该I2C外设的I2C控制器,而这个I2C控制器在linux系统中被称为“I2C适配器”。而且众所周知,在linux系统中,每一个设备都是以文件的形式存在的,所以在linux中操作I2C外设就变成了操作I2C适配器设备文件。Linux系统(也就是内核)为每个I2C适配器生成了一个主设备号为89的设备节点(次设备号为0-255),它并没有针对特定的I2C外设而设计,只是提供了通用的read(),write(),和ioctl()等文件操作接口,在用户空间的应用层就可以借用这些接口访问挂接在适配器上的I2C设备的存储空间或寄存器,并控制I2C设备的工作方式。

I2C协议

工欲善其事,必先利其器。在写测试程序之前需要先大致了解一下什么是I2c?
I2C (Inter-Integrated Circuit,内置集成电路),同步(SCL控制) 串行(按位传输)接口。
两线协议-----时钟线和双向数据线,SCL (Serial CLock,串行时钟)和SDA (Serial Data,串行数据)。
主从协议-----通信双方为主机适配器( 主控制器)和客户设备(从设备)

特点:
交换数据总量少;数据传输率低;标准传输频率为100KHZ、400KHZ;

I2C总线物理连接图
在这里插入图片描述

测试程序

使用的开发板共有四条I2c总线,在I2C2总线上挂在了一个音频芯片,其设备地址为0x1a
各平台使用的交叉编译工具不一样,按实际情况进行交叉编译即可
临时配置交叉编译环境

[CAN K510_SDK]$ export PATH=$PATH:/data/K510_SDK/toolchain/nds64le-linux-glibc-v5d/bin
[CAN K510_SDK]$ export ARCH=arm
[CAN K510_SDK]$ export CROSS_COMPILE=riscv64-linux-
[CAN K510_SDK]$export CC=riscv64-linux-gcc
[CAN K510_SDK]$export CXX=riscv64-linux-g++

到I2c源码目录下,交叉编译生成应用程序

[CAN i2c]$ riscv64-linux-gcc i2c_1.c -o i2ctest1

实际测试:
在这里插入图片描述
通过测试可以看到修改了0x0c寄存器的值,缺点在于只要一修改寄存器的值,不管设置为何值,相应寄存器的值都会变为0,使用I2Ctools工具修改也是。这个后面需要改进。
测试程序源码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <linux/i2c.h>
#include <linux/i2c-dev.h>//#define CHIP_ADDR 0x1a
#define I2C_DEV "/dev/i2c-2" //i2c_dev为i2c 
#define PAGE_SIZE    1  static int iic_read(int fd, char buff[], int addr, int count)
{int i,res;if(write(fd,&addr,1)!=1)        //将要操作的寄存器首地址发给从设备return -1;res=read(fd,buff,count);printf("read %d byte at 0x%02x\n", res, addr);for(i=0;i<res;i++){printf("read %d data is :0x%02x\n",i,buff[i]);}return res;
}static int iic_write(int fd, char buff[], int addr, int count){int i,res;static char sendbuffer[PAGE_SIZE+1];memcpy(sendbuffer+1, buff, count);sendbuffer[0]=addr;        //将要操作的寄存器首地址赋给sendbuffer[0]for(i=0; i<sizeof(sendbuffer); i++)printf("wirte %d data is 0x%02x\n",i,sendbuffer[i]);res=write(fd,sendbuffer,count+1);printf("write %d byte at 0x%02x\n", res, addr);return res;}int main(void){int fd;int res;char ch;char buf[50];int regaddr,i,slaveaddr;fd = open(I2C_DEV, O_RDWR);// I2C_DEV /dev/i2c-2if(fd < 0){printf("####i2c test device open failed####\n");return (-1);}else{printf("### i2c test %s open success###\n",I2C_DEV);}printf("please input slave addr:");scanf("%x",&slaveaddr);printf("input slave addr is:0x%x\n",slaveaddr);printf("please input reg addr:");scanf("%x",&regaddr);printf("input reg addr is:0x%x\n",regaddr);getchar();printf("#####usage####\n");printf("input 0:to exit\n");printf("input 1:read i2c test\n");printf("input 2:write i2c test\n");res = ioctl(fd,I2C_TENBIT,0);   // 0 7bit;1 10bitres = ioctl(fd,I2C_SLAVE_FORCE,slaveaddr);    while((ch=getchar())!='0'){switch(ch){case '1':getchar();printf("read i2c test\n");usleep(1000);res=iic_read(fd,buf,regaddr,1);printf("%d bytes read success\n",res);break;case '2':getchar();buf[0]=0x01;printf("write i2c test\n");res=iic_write(fd,buf,regaddr,1);printf("%d bytes write success\n",res);break;default:printf("bad command\n");break;}}return 0;
}

Linux I2C应用编程操作流程

1)确定I2C设配器的设备文件节点
​ i2c适配器的设备节点是/dev/i2c-x,其中x是数字。由于适配器编号是动态分配的(和注册次序有关),可以使用i2ctools工具配置设备树节点注册进行查看
2)打开适配器对应的设备节点
​ 当用户打开适配器设备节点的时候,Kernel中的i2c-dev代码为其建立一个i2c_client,但是这个i2c_client并不加到i2c_adapter的client链表当中。当用户关闭设备节点时,它自动被释放。
3) IOCTL控制
​ 这个可以参考内核源码中的include/linux/i2c-dev.h文件。下面举例说明主要的IOCTL命令:
在这里插入图片描述
4) 使用I2C协议和设备进行通信

http://www.yidumall.com/news/15295.html

相关文章:

  • 优化方案数学2024电子版汕头seo收费
  • 做网站要用到哪些技术指数函数图像
  • 专门做艺术字的网站网络营销广告案例
  • 网络推广营销工具seo培训多少钱
  • 物流公司网站建设济南seo优化外包服务公司
  • 网站详情页用哪个软件做小程序seo推广技巧
  • 网站设计与制作的论文报告品牌网络营销策划
  • java ee博客网站开发十大搜索引擎
  • 金泉网做的山东黄锈石网站有哪些佛山网站建设排名
  • 石河子网站建设公司手机百度安装下载
  • 重庆电商网站建设惠州seo排名
  • 山东房和城乡建设厅网站广东疫情中高风险地区最新名单
  • 青岛中企动力做网站怎么样数据查询网站
  • 怎样做商城网站的推广网络营销成功案例介绍
  • 珠海华兴建设工程有限公司网站广州网站运营专业乐云seo
  • 做软件的网站建设十大经典广告营销案例
  • 无法定位wordpress内容目录(wp-content)郑州seo线上推广系统
  • 关于做血糖仪的网站深圳货拉拉
  • 海阳网站制作百度网站首页提交入口
  • 网站建设计划 文库百家号关键词排名优化
  • 北京市朝阳区网站制作公司排名优化系统
  • gmp移动跨境平台电商长沙正规竞价优化服务
  • 湖北省住房部城乡建设厅网站百度站长工具收费吗
  • 内江如何做百度的网站seo广告平台
  • 阆中做网站韩国网站
  • 模块化建站工具西安seo外包优化
  • 做网站开发的需求文档网站seo关键词设置
  • 做网站视频用哪个视频编辑软件搜索引擎优化简称
  • 网站全程设计技术网络营销论文
  • 华与华营销策划公司seo顾问培训