一、概述
ch36x_lib库是Linux系统下用于开发CH36X系列设备CH365/CH367/CH368等芯片应用的软件接口库,此接口库主要提供以下功能:
-
设备打开/关闭
-
获取芯片类型/驱动版本
-
获取IO基地址/Memory基地址/中断号
-
配置空间读写(支持单字节/双字节/四字节)
-
IO空间读写(支持单字节/双字节/四字节)
-
Memory空间读写(支持单字节/双字节/四字节/块)
-
中断启用/禁用/设置中断服务程序
-
SPI模式设置/SPI透传接口/FLASH Lock/擦除/读写
-
I2C读写
应用框图:
二、接口函数说明
-
ch36x_open
int ch36x_open(const char *devname) 功能:打开设备 参数:devname:设备完整路径名 返回:成功时返回文件描述符,失败时返回负值
-
ch36x_close
int ch36x_close(int fd) 功能:关闭设备 参数:fd:设备文件描述符 返回:成功时返回0,失败时返回其他值
-
ch36x_get_chiptype
int ch36x_get_chiptype(int fd, enum CHIP_TYPE *chiptype) 功能:获取当前打开的芯片型号 参数:fd:设备文件描述符,chiptype:芯片类型名 返回:成功时返回0,失败时返回其他值
-
ch36x_get_version
int ch36x_get_version(int fd, char *version) 功能:获取当前驱动版本 参数:fd:设备文件描述符,version:驱动版本字符串 返回:成功时返回0,失败时返回其他值
-
ch36x_get_irq
int ch36x_get_irq(int fd, int *irq) 功能:获取系统分配的中断号 参数:fd:设备文件描述符,irq:设备中断号 返回:成功时返回0,失败时返回其他值
-
ch36x_get_ioaddr
int ch36x_get_ioaddr(int fd, void *ioaddr) 功能:获取系统为设备分配的IO基址 参数:fd:设备文件描述符,ioaddr:系统分配的IO基址 返回:成功时返回0,失败时返回其他值
-
ch36x_get_memaddr
int ch36x_get_memaddr(int fd, void *memaddr) 功能:获取系统为设备分配的Memory基址 参数:fd:设备文件描述符,memaddr:系统分配的Memory基址 返回:成功时返回0,失败时返回其他值
-
ch36x_read_config_byte
int ch36x_read_config_byte(int fd, uint8_t offset, uint8_t *obyte); 功能:以字节为单位读取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,obyte:读取到的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_config_word
int ch36x_read_config_word(int fd, uint8_t offset, uint16_t *oword); 功能:以字为单位读取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,oword:读取到的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_config_dword
int ch36x_read_config_dword(int fd, uint8_t offset, uint32_t *odword) 功能:以双字为单位读取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,odword:读取到的32位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_config_byte
int ch36x_write_config_byte(int fd, uint8_t offset, uint8_t ibyte); 功能:以字节为单位写数据到取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,ibyte:写入的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_config_word
int ch36x_write_config_word(int fd, uint8_t offset, uint16_t iword) 功能:以字为单位写数据到取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,iword:写入的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_config_dword
int ch36x_write_config_dword(int fd, uint8_t offset, uint32_t idword) 功能:以双字为单位写数据到取配置空间 参数:fd:设备文件描述符,offset:配置空间偏移地址,idword:写入的32位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_io_byte
int ch36x_read_io_byte(int fd, uint8_t offset, uint8_t *obyte) 功能:以字节为单位读取IO空间 参数:fd:设备文件描述符,offset:IO空间偏移地址,obyte:读取到的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_io_word
int ch36x_read_io_word(int fd, uint8_t offset, uint16_t *oword) 功能:以字为单位读取IO空间 参数:fd:设备文件描述符,offset:IO偏移地址,oword:读取到的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_io_dword
int ch36x_read_io_dword(int fd, uint8_t offset, uint32_t *odword) 功能:以双字为单位读取IO空间 参数:fd:设备文件描述符,offset:IO空间偏移地址,odword:读取到的32位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_io_byte
int ch36x_write_io_byte(int fd, uint8_t offset, uint8_t ibyte) 功能:以字节为单位写数据到IO空间 参数:fd:设备文件描述符,offset:IO空间偏移地址,ibyte:写入的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_io_word
int ch36x_write_io_word(int fd, uint8_t offset, uint16_t iword) 功能:以字为单位写数据到IO空间 参数:fd:设备文件描述符,offset:IO空间偏移地址,iword:写入的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_io_dword
int ch36x_write_io_dword(int fd, uint8_t offset, uint32_t dword); 功能:以双字为单位写数据到IO空间 参数:fd:设备文件描述符,offset:IO空间偏移地址,dword:写入的32位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_mem_byte
int ch36x_read_mem_byte(int fd, uint16_t offset, uint8_t *obyte) 功能:以字节为单位读取Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,obyte:读取到的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_mem_word
int ch36x_read_mem_word(int fd, uint16_t offset, uint16_t *oword) 功能:以字为单位读取Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,oword:读取到的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_read_mem_dword
int ch36x_read_mem_dword(int fd, uint16_t offset, uint32_t *odword) 功能:以双字为单位读取Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,odword:读取到的32位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_mem_byte
int ch36x_write_mem_byte(int fd, uint16_t offset, uint8_t ibyte) 功能:以字节为单位写数据到Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,ibyte:写入的8位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_mem_word
int ch36x_write_mem_word(int fd, uint16_t offset, uint16_t iword) 功能:以字为单位写数据到Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,iword:写入的16位数据 返回:成功时返回0,失败时返回其他值
-
ch36x_write_mem_dword
int ch36x_write_mem_dword(int fd, uint16_t offset, uint32_t idword) 功能:以双字为单位写数据到Memory空间 参数:fd:设备文件描述符,offset:Memory空间偏移地址,idword:写入的32位数据 返回:成功时返回0,失败时返回其他值
-
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,失败时返回其他值
-
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,失败时返回其他值
-
ch36x_enable_isr
int ch36x_enable_isr(int fd, enum INTMODE mode) 功能:开启中断 参数:fd:设备文件描述符,mode:设置中断触发方式,支持高/低电平、上升沿/下降沿 返回:成功时返回0,失败时返回其他值
-
ch36x_disable_isr
int ch36x_disable_isr(int fd); 功能:关闭中断 参数:fd:设备文件描述符 返回:成功时返回0,失败时返回其他值
-
ch36x_set_int_routine
void ch36x_set_int_routine(int fd, void *isr_handler) 功能:设置中断服务函数 参数:fd:设备文件描述符,isr_handler:中断服务函数
-
ch36x_set_stream
int ch36x_set_stream(int fd, uint8_t mode) 功能:设置SPI模式 参数:fd:设备文件描述符,mode:SPI模式设置参数 返回:成功时返回0,失败时返回其他值
-
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,失败时返回其他值
-
ch36x_flash_lock
int ch36x_flash_lock(int fd, uint8_t lock) 功能:锁/解锁FLASH 参数:fd:设备文件描述符,lock:锁/解锁使能,0->解锁,1->上锁 返回:成功时返回0,失败时返回其他值
-
ch36x_flash_erase
int ch36x_flash_erase(int fd, uint32_t addr, uint32_t ilen) 功能:擦除FLASH数据 参数:fd:设备文件描述符,addr:FLASH擦除起始地址,ilen:擦除长度 返回:成功时返回0,失败时返回其他值
-
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,失败时返回其他值
-
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,失败时返回其他值
-
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,失败时返回其他值
-
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库中的接口函数开发目标程序,一般情况下用户可以基于此例程修改,也可以根据此开发说明自行开发。