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

本文介绍了一个用于Linux系统的CH36X系列设备开发库ch36x_lib,该库提供了丰富的接口函数,包括设备管理、配置空间读写、IO及Memory空间操作、中断管理、SPI及I2C通信等功能,适用于CH365/CH367/CH368等芯片的应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PC技术小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值