CH36X系列接口芯片Linux系统开发库说明

news2024/11/18 17:37:03

一、概述

ch36x_lib库是Linux系统下用于开发CH36X系列设备CH365/CH367/CH368等芯片应用的软件接口库,此接口库主要提供以下功能:

  • 设备打开/关闭

  • 获取芯片类型/驱动版本

  • 获取IO基地址/Memory基地址/中断号

  • 配置空间读写(支持单字节/双字节/四字节)

  • IO空间读写(支持单字节/双字节/四字节)

  • Memory空间读写(支持单字节/双字节/四字节/块)

  • 中断启用/禁用/设置中断服务程序

  • SPI模式设置/SPI透传接口/FLASH Lock/擦除/读写

  • I2C读写

应用框图:

二、接口函数说明

  1. ch36x_open

     int ch36x_open(const char *devname)
     
     功能:打开设备
     
     参数:devname:设备完整路径名
     
     返回:成功时返回文件描述符,失败时返回负值
  2. ch36x_close

    int ch36x_close(int fd)
    ​
    功能:关闭设备
    ​
    参数:fd:设备文件描述符
    ​
    返回:成功时返回0,失败时返回其他值
  3. ch36x_get_chiptype

    int ch36x_get_chiptype(int fd, enum CHIP_TYPE *chiptype)
    ​
    功能:获取当前打开的芯片型号
    ​
    参数:fd:设备文件描述符,chiptype:芯片类型名
    ​
    返回:成功时返回0,失败时返回其他值
  4. ch36x_get_version

    int ch36x_get_version(int fd, char *version)
    ​
    功能:获取当前驱动版本
    ​
    参数:fd:设备文件描述符,version:驱动版本字符串
    ​
    返回:成功时返回0,失败时返回其他值
  5. ch36x_get_irq

    int ch36x_get_irq(int fd, int *irq)
    ​
    功能:获取系统分配的中断号
    ​
    参数:fd:设备文件描述符,irq:设备中断号
    ​
    返回:成功时返回0,失败时返回其他值
  6. ch36x_get_ioaddr

    int ch36x_get_ioaddr(int fd, void *ioaddr)
    ​
    功能:获取系统为设备分配的IO基址
    ​
    参数:fd:设备文件描述符,ioaddr:系统分配的IO基址
    ​
    返回:成功时返回0,失败时返回其他值
  7. ch36x_get_memaddr

    int ch36x_get_memaddr(int fd, void *memaddr)
    ​
    功能:获取系统为设备分配的Memory基址
    ​
    参数:fd:设备文件描述符,memaddr:系统分配的Memory基址
    ​
    返回:成功时返回0,失败时返回其他值
  8. ch36x_read_config_byte

    int ch36x_read_config_byte(int fd, uint8_t offset, uint8_t *obyte);
    ​
    功能:以字节为单位读取配置空间
    ​
    参数:fd:设备文件描述符,offset:配置空间偏移地址,obyte:读取到的8位数据
    ​
    返回:成功时返回0,失败时返回其他值
  9. ch36x_read_config_word

    int ch36x_read_config_word(int fd, uint8_t offset, uint16_t *oword);
    
    功能:以字为单位读取配置空间
    
    参数:fd:设备文件描述符,offset:配置空间偏移地址,oword:读取到的16位数据
    
    返回:成功时返回0,失败时返回其他值
  10. ch36x_read_config_dword

    int ch36x_read_config_dword(int fd, uint8_t offset, uint32_t *odword)
    
    功能:以双字为单位读取配置空间
    
    参数:fd:设备文件描述符,offset:配置空间偏移地址,odword:读取到的32位数据
    
    返回:成功时返回0,失败时返回其他值
  11. ch36x_write_config_byte

    int ch36x_write_config_byte(int fd, uint8_t offset, uint8_t ibyte);
    
    功能:以字节为单位写数据到取配置空间
    
    参数:fd:设备文件描述符,offset:配置空间偏移地址,ibyte:写入的8位数据
    
    返回:成功时返回0,失败时返回其他值
  12. ch36x_write_config_word

    int ch36x_write_config_word(int fd, uint8_t offset, uint16_t iword)
    
    功能:以字为单位写数据到取配置空间
    
    参数:fd:设备文件描述符,offset:配置空间偏移地址,iword:写入的16位数据
    
    返回:成功时返回0,失败时返回其他值
  13. ch36x_write_config_dword

    int ch36x_write_config_dword(int fd, uint8_t offset, uint32_t idword)
    
    功能:以双字为单位写数据到取配置空间
    
    参数:fd:设备文件描述符,offset:配置空间偏移地址,idword:写入的32位数据
    
    返回:成功时返回0,失败时返回其他值
  14. ch36x_read_io_byte

    int ch36x_read_io_byte(int fd, uint8_t offset, uint8_t *obyte)
    
    功能:以字节为单位读取IO空间
    
    参数:fd:设备文件描述符,offset:IO空间偏移地址,obyte:读取到的8位数据
    
    返回:成功时返回0,失败时返回其他值
  15. ch36x_read_io_word

    int ch36x_read_io_word(int fd, uint8_t offset, uint16_t *oword)
    
    功能:以字为单位读取IO空间
    
    参数:fd:设备文件描述符,offset:IO偏移地址,oword:读取到的16位数据
    
    返回:成功时返回0,失败时返回其他值
  16. ch36x_read_io_dword

    int ch36x_read_io_dword(int fd, uint8_t offset, uint32_t *odword)
    
    功能:以双字为单位读取IO空间
    
    参数:fd:设备文件描述符,offset:IO空间偏移地址,odword:读取到的32位数据
    
    返回:成功时返回0,失败时返回其他值
  17. ch36x_write_io_byte

    int ch36x_write_io_byte(int fd, uint8_t offset, uint8_t ibyte)
    
    功能:以字节为单位写数据到IO空间
    
    参数:fd:设备文件描述符,offset:IO空间偏移地址,ibyte:写入的8位数据
    
    返回:成功时返回0,失败时返回其他值
  18. ch36x_write_io_word

    int ch36x_write_io_word(int fd, uint8_t offset, uint16_t iword)
    
    功能:以字为单位写数据到IO空间
    
    参数:fd:设备文件描述符,offset:IO空间偏移地址,iword:写入的16位数据
    
    返回:成功时返回0,失败时返回其他值
  19. ch36x_write_io_dword

    int ch36x_write_io_dword(int fd, uint8_t offset, uint32_t dword);
    
    功能:以双字为单位写数据到IO空间
    
    参数:fd:设备文件描述符,offset:IO空间偏移地址,dword:写入的32位数据
    
    返回:成功时返回0,失败时返回其他值
  20. ch36x_read_mem_byte

    int ch36x_read_mem_byte(int fd, uint16_t offset, uint8_t *obyte)
    
    功能:以字节为单位读取Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,obyte:读取到的8位数据
    
    返回:成功时返回0,失败时返回其他值
  21. ch36x_read_mem_word

    int ch36x_read_mem_word(int fd, uint16_t offset, uint16_t *oword)
    
    功能:以字为单位读取Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,oword:读取到的16位数据
    
    返回:成功时返回0,失败时返回其他值
  22. ch36x_read_mem_dword

    int ch36x_read_mem_dword(int fd, uint16_t offset, uint32_t *odword)
    
    功能:以双字为单位读取Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,odword:读取到的32位数据
    
    返回:成功时返回0,失败时返回其他值
  23. ch36x_write_mem_byte

    int ch36x_write_mem_byte(int fd, uint16_t offset, uint8_t ibyte)
    
    功能:以字节为单位写数据到Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,ibyte:写入的8位数据
    
    返回:成功时返回0,失败时返回其他值
  24. ch36x_write_mem_word

    int ch36x_write_mem_word(int fd, uint16_t offset, uint16_t iword)
    
    功能:以字为单位写数据到Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,iword:写入的16位数据
    
    返回:成功时返回0,失败时返回其他值
  25. ch36x_write_mem_dword

    int ch36x_write_mem_dword(int fd, uint16_t offset, uint32_t idword)
    
    功能:以双字为单位写数据到Memory空间
    
    参数:fd:设备文件描述符,offset:Memory空间偏移地址,idword:写入的32位数据
    
    返回:成功时返回0,失败时返回其他值
  26. ch36x_read_mem_block

    int ch36x_read_mem_block(int fd, uint16_t offset, uint8_t *obuffer, uint32_t len)
    
    功能:以块为单位读取Memory空间的数据
    
    参数:fd:设备文件描述符,obuffer:读取的数据,len:读取数据的长度
    
    返回:成功时返回0,失败时返回其他值
  27. ch36x_write_mem_block

    int ch36x_write_mem_block(int fd, uint16_t offset, uint8_t *ibuffer, uint32_t len)
    
    功能:以块为单位写入数据到Memory空间
    
    参数:fd:设备文件描述符,ibuffer:要写入的数据,len:写入数据的长度
    
    返回:成功时返回0,失败时返回其他值
  28. ch36x_enable_isr

    int ch36x_enable_isr(int fd, enum INTMODE mode)
    
    功能:开启中断
    
    参数:fd:设备文件描述符,mode:设置中断触发方式,支持高/低电平、上升沿/下降沿
    
    返回:成功时返回0,失败时返回其他值
  29. ch36x_disable_isr

    int ch36x_disable_isr(int fd);
    
    功能:关闭中断
    
    参数:fd:设备文件描述符
    
    返回:成功时返回0,失败时返回其他值
  30. ch36x_set_int_routine

    void ch36x_set_int_routine(int fd, void *isr_handler)
    
    功能:设置中断服务函数
    
    参数:fd:设备文件描述符,isr_handler:中断服务函数
  31. ch36x_set_stream

    int ch36x_set_stream(int fd, uint8_t mode)
    
    功能:设置SPI模式
    
    参数:fd:设备文件描述符,mode:SPI模式设置参数
    
    返回:成功时返回0,失败时返回其他值
  32. ch36x_stream_spi

    int ch36x_stream_spi(int fd, uint8_t *ibuffer, uint32_t ilen, uint8_t *obuffer, uint32_t olen)
    
    功能:SPI数据收发
    
    参数:fd:设备文件描述符,ibuffer:发送的数据,ilen:发送数据的长度,obuffer:接收返回的数据,olen:接收数据的长度
    
    返回:成功时返回0,失败时返回其他值
  33. ch36x_flash_lock

    int ch36x_flash_lock(int fd, uint8_t lock)
    
    功能:锁/解锁FLASH
    
    参数:fd:设备文件描述符,lock:锁/解锁使能,0->解锁,1->上锁
    
    返回:成功时返回0,失败时返回其他值
  34. ch36x_flash_erase

    int ch36x_flash_erase(int fd, uint32_t addr, uint32_t ilen)
    
    功能:擦除FLASH数据
    
    参数:fd:设备文件描述符,addr:FLASH擦除起始地址,ilen:擦除长度
    
    返回:成功时返回0,失败时返回其他值
  35. ch36x_flash_read

    int ch36x_flash_read(int fd, uint32_t addr, uint8_t *obuffer, uint32_t olen)
    
    功能:读取FLASH数据
    
    参数:fd:设备文件描述符,addr:FLASH读取起始地址,obuffer:读取的数据,ilen:读取数据长度
    
    返回:成功时返回0,失败时返回其他值
  36. ch36x_flash_write

    int ch36x_flash_write(int fd, uint32_t addr, uint8_t *ibuffer, uint32_t ilen)
    
    功能:写入FLASH数据
    
    参数:fd:设备文件描述符,addr:FLASH写入起始地址,ibuffer:写入的数据,ilen:写入数据长度
    
    返回:成功时返回0,失败时返回其他值
  37. ch36x_i2c_write

    int ch36x_i2c_write(int fd, uint8_t addr, uint8_t reg, uint8_t *ibuffer, uint32_t ilen)
    
    功能:写I2C操作
    
    参数:fd:设备文件描述符,addr:从机设备地址,reg:从机寄存器地址,ilen:发送数据长度
    
    返回:成功时返回0,失败时返回其他值
  38. ch36x_i2c_read

    int ch36x_i2c_read(int fd, uint8_t addr, uint8_t reg, uint8_t *obuffer, uint32_t olen)
    
    功能:读I2C操作
    
    参数:fd:设备文件描述符,addr:从机设备地址,reg:从机寄存器地址,olen:读取数据长度
    
    返回:成功时返回0,失败时返回其他值

开发资料包的demo文件夹下提供的例子程序演示了如何使用ch36x_lib库中的接口函数开发目标程序,一般情况下用户可以基于此例程修改,也可以根据此开发说明自行开发。

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

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

相关文章

基于java+springboot+mybatis+vue+mysql的体育场馆运营系统

项目介绍 在系统流程分析当中调查分析它是比较重要的环节,因为在这个系统当中它都涉及到每个环节的业务流程,所以从计算机毕业设计SpringBootVue选题推荐—体育场馆运营系统的设计的整体设计上要保证各个信息的正确输入和输出以及对数据储存的完整&…

linux下JDK安装

先下载离线安装包,我将安装包直接放到/root/softPackages目录下(需要安装包可私聊) 1.卸载已有OpenJDK(如果有) 查找已经安装的OpenJDK包 rpm -qa | grep java 如果有查出结果,直接yum -y remove卸载即可: 例如&a…

MobileNetV1作为CenterNet的Backbone尝试

1、CenterNet对于Backbone的要求是: 输入为512*512,输出为:heatmap(128*128*C)、wh(128*128*2)、reg(128*128*2)。 2、原生的MobileNet V1输出: 最后一层通…

JSP:使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

摘要:首先这个Decorator解释一下这个单词:“装饰器”,我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的include标签,将我们的常用页…

关于使用C语言实现负值和非负值进行左右划分,奇数和偶数进行左右划分

目录 1.负值和非负值左右划分 2.偶数和奇数的划分 数据结构之折半查找(递归和非递归),插值查找和斐波那契查找 归并排序求逆序对(C语言) 1.负值和非负值左右划分 要求:使用尽可能少的时间将一组连续的序…

BlockRender for 3DMAX一键区域渲染插件使用教程

BlockRender一键区域渲染插件,自定义区域渲染并在视口中直接查看结果,并可以自动或手动对渲染的图像进行保存。 这个小插件的亮点就在于它能对渲染的图像进行保存,如果没有保存图像的功能,显然这个插件没有任何存在的意义。有了保…

分布式操作系统 - 6.分布式同步控制

文章目录1.物理时钟同步1.1 时钟同步问题1.2 时钟同步算法1.3 网络时间协议(1)Christian算法(2)考虑的问题(3)Berkeley算法-集中式方法(4)平均值算法-非集中式方法(5&…

python教程十 列表

列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以进行的操作…

java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之OS_Part_3_Linux整起(Linux常见命令操作、Shell)

OS的一些基本概念简介,在下面两篇中已经介绍了一些: OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)OS_Part_2整起~IO们那些事【包括五种IO模型&#xf…

爬虫内容学习-工具类---xpath-1

爬虫学习建议: 在编写python爬虫程序时,只需要做以下两件事: 发送GET请求,获取HTML [第一类]解析HTML,获取数据 [第二类] 这两件事,python都有相应的库帮你去做,你只需要知道如何…

ubuntu20.04 搭建kernel调试环境第四篇--图形化调试kernel

一、安装eclipse 1)官网下载对应的版本(eclipse-inst-jre-linux64.tar.gz) Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects... 2)…

群集【LNMP+SSL+nfs+负载均衡及高可用】

目录 🦐web1部署 🍁创建证书 🍁创建论坛 🦐mysql部署 🦐php部署 🦐nfs部署 🍁创建共享目录 🍁挂载目录 🦐LNMP测试 🦐web2部署 🦐lb1部署 &#x…

资料:成为全栈dApp开发者的学习计划

资料:成为全栈dApp开发者的学习计划 本篇介绍与区块链和去中心化应用程序有关的一切。 前提条件 任何面向对象编程语言的基础知识。Node.js和Npm。前端基础知识。如果你有兴趣做一个全栈的去中心化应用,而不仅仅是智能合约。 流程 去中心化技术和区块…

Mybatis:Mybatis动态SQL(8)

动态SQL1. 动态sql简介2. if3. where4. trim5. choose、when、otherwise6. foreachforeach实现批量添加foreach实现批量删除7. SQL片段8. 总结1. 动态sql简介 Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句…

CAS介绍

CAS介绍一、什么是CAS二、CAS是怎么实现的三、CAS应用场景3.1 实现原子类3.2 实现自旋锁四、CAS的 ABA问题4.1 什么是ABA问题4.2 ABA问题引来的bug4.3 解决方案一、什么是CAS CAS:全称Compare and swap,字面意思:“比较并交换”。一个 CAS 涉…

基于Oracle数据库的学生信息管理系统的设计与开发(JSP)

目 录 1 引言 1 1.1 课题来源及意义 1 1.2 研究内容与目标 1 1.3 本文的内容结构 2 1.4 本章小结 3 2 需求分析 4 2.1 系统功能需求 4 2.2 系统的性能需求 4 2.3 系统数据要求 5 2.4…

Linux恶意攻击自查方案

用户及用户文件检查 (1)passwd文件 文件权限 /etc/passwd默认权限为644,其最小权限为444,首先应对该文件权限进行检查,以确认配置是否正确: ls -l /etc/passwd 用户检查 查看passwd文件内容&#xff…

浅谈电缆行业MES系统解决方案

电缆行业虽然只是一个配套行业,却占据着中国电工行业1/4的产值。它产品种类众多,应用范围十分广泛,涉及到电力、建筑、通信、制造等行业,与国民经济的各个部门都密切相关。电缆还被称为国民经济的“动脉”与“神经”,是…

Guice + Jersey + Jetty 框架 - 学习笔记

因项目使用 Guice Jersey Jetty 框架,所有进行了学习,下面是学习笔记。 目录 一、Guice 1. 依赖注入方式: Inject 2. 依赖绑定(依赖注册): bind() 3. 作用域 4. 基本使用 二、Jersey 使用内置容器为例(使用J…

[附源码]Python计算机毕业设计单位库房管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…