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

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

一、概述

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库中的接口函数开发目标程序,一般情况下用户可以基于此例程修改,也可以根据此开发说明自行开发。

相关文章:

  • 为什么char a[]的a不能用a=“hello”来赋值?
  • SpringBoot简单优雅实现图片上传功能(超详细)
  • SpringBoot整合Mybatis-Plus分页失效
  • 10.每天进步一点点---Python-Requests HTTP 请求库-2
  • 鸿蒙开发初体验以及遇到的几点坑
  • AI 实战篇 |基于 AI开放平台实现 【植物识别】 功能,成为行走的百科全书
  • 9 个神奇的 Python 技巧,让你的代码更优雅
  • Roson的Qt之旅 #136 Qt实现截图功能
  • MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
  • 【OpenCV-Python】教程:4-7 BRIEF( Binary Robust Independent Elementary Features)特征
  • 【Python】基本语法 4 (列表和元组)
  • Linux系统中如何实现串口的格式化功能方法
  • [附源码]计算机毕业设计基于web的建设科技项目申报管理系统Springboot程序
  • 【Linux】Linux的常见指令详解(下)
  • AI 让观众成为 3D 版《老友记》的导演了?
  • HTML做一个简单的页面(纯html代码)地球专题学习网站
  • 用Python画一个足球
  • C语言百日刷题第十三天
  • Frida - App逆向 JavaScript代码注入 基本语法以及数据类型介绍
  • 智慧天气系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
  • 招商蛇口:一季度营收约204亿元,净利润约4.45亿元
  • 中国人民解放军南部战区位南海海域进行例行巡航
  • 南京航空航天大学启动扁平化改革:管理岗规模控制在20%,不再统一设科级机构
  • 匈牙利国会通过退出国际刑事法院的决定
  • 民生访谈|规范放生活动、提升供水品质……上海将有这些举措
  • 文天祥与“不直人间一唾轻”的元将唆都