芯片简介
CH347 高速 USB2.0 总线转换芯片,可实现为USB主机扩展JTAG\SWD\SPI\I2C\UART\GPIO等接口的功能,包含 CH347F和CH347T两种型号,其区别主要在于:
1、封装差异,CH347F为QFN28_4X4,CH347T为TSSOP-20封装;
2、模式差异,CH347F不需要进行模式配置进行接口选择,CH347T需要进行模式选择;
3、VIO电源差异,CH347T提供独立的VIO电源引脚,支持IO接口独立供电,支持3.3V/2.5V/1.8V等。
应用方式
Linux系统下CH347的使用主要有两种应用方式:
1、使用USB转MPHSI(Multi Protocol High-Speed Serial Interface)Master总线驱动(CH34X-MPHSI-Master)
使用此驱动软件为系统扩展标准SPI和I2C总线、GPIO Expander、中断信号等。驱动正常工作时会在系统下创建新的SPI和I2C Master,拥有独立的bus num,原SPI和I2C器件的设备驱动可直接挂载到该总线上,无需任何修改。驱动会同时创建GPIO相关资源,各GPIO可通过sysfs文件系统或应用层软件直接访问,也可以由其他设备驱动申请该GPIO的访问权以及申请GPIO对应中断号并注册中断服务程序。
该场景适用于安卓/Linux主机上CPU原生SPI/I2C/GPIO Master资源通道不够或者功性能不满足实际产品需求的情况。
项目应用完整介绍:基于CH347实现USB扩展SPI/I2C/GPIO Master主机应用方案_扩展spi芯片_PC技术小能手的博客-CSDN博客
2、使用CH341PAR字符设备驱动
驱动软件正常工作时,会自动在系统/dev目录下创建字符设备,名称为:/dev/ch34x_pis*。基于此节点设备,配合 libch347 动态库,ch347demo应用程序实现对 CH347 芯片的硬件资源的访问。
此方式适用于不需要依赖于原有外设驱动工作的应用场景,使用字符设备实现对于外设的读写功能。类似于串口应用,通过访问 /dev/tty* 设备实现相应设备的:打开、关闭、读写等操作。
资料包构成:
demo:应用软件示例
driver:驱动软件
lib:应用库文件,提供大部分CPU架构的动态库和静态库
(1)驱动加载
1. unzip CH341PAR.ZIP
2. cd driver
3. sudo make install
插入CH347硬件设备,此时会自动在 /dev 目录下创建字符设备:ch34x_pis*,如下所示:
至此,代表驱动程序和芯片工作正常。
(2)拷贝库文件至系统库路径下,此处以X64 CPU的 ch347 动态库为例:
sudo cp lib/x64/dynamic/libch347.so /usr/lib
(3)编译demo程序,链接库文件
1. cd demo/ch347/
2. gcc ch347_demo.c -o app -lch347
(4)运行应用程序
sudo ./app /dev/ch34x_pis0
应用选项描述:
选项 'f' — SPI FLASH 操作演示,demo软件会按照以下流程访问FLASH:从0地址读2K数据显示->擦除2K数据->重新写入2K数据->读取2K数据并进行校验
选项 'e' — EEPROM 操作演示,demo软件会按照以下流程访问EEPROM:从0地址读256字节数据显示->擦除256字节数据->重新写入256字节数据->读取256字节数据并进行校验
选项 'a' — GPIO操作演示,demo软件会获取所有GPIO口状态并显示,H代表高电平,L代表低电平
选项 'g' — GPIO操作演示,demo软件会将所有GPIO口设置为输出,然后循环挨个操作各GPIO以固定间隔输出低电平脉宽,模拟跑马灯效果
选项 'j' — JTAG操作演示,demo软件会自动复位JTAG设备,读取IDCODE
选项 's' — SPI 从机模式演示,demo软件会自动配置芯片工作在SPI从机模式下,不断接收采集SPI主机发送的数据,此模式下芯片无法再使用其他资源,直至主动退出此模式
选项 'o' — 退出 SPI 从机模式
选项 'i' — 开启 GPIO 中断功能,demo 软件会自动开启 GPIO6 的中断功能,默认开启双边沿触发,当 GPIO6 监测到有上升沿或下降沿,会自动触发注册的中断回调函数
选项 'd' — 关闭 GPIO 中断功能