CH34X-MPHSI高速Master扩展应用—《i2c-tools使用》

本文介绍了如何使用CH347USB转接芯片和CH34X-MPHSI-Master驱动在Linux系统中扩展I2C、SPI总线和GPIO资源。驱动安装后,系统会创建新的I2CMaster,允许直接挂载原有I2C设备。文章提供了示例代码,展示了如何添加设备驱动以及使用i2c-tools进行读写操作。默认I2C时钟为100kHz,不支持动态修改。

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

本文介绍,基于USB2.0高速USB转接芯片CH347,配合厂商提供的USB转MPHSI(Multi Protocol High-Speed Serial Interface)Master总线驱动(CH34X-MPHSI-Master)为系统扩展I2C总线的用法,除此之外,还可以扩展SPI总线和GPIO等资源。

驱动软件正常工作后,会在系统下创建新的I2C Master,拥有独立的bus num,原I2C器件的设备驱动可直接挂载到该总线上,无需任何修改。

项目地址:GitHub - WCHSoftGroup/ch34x_mphsi_master_linux

 应用框图:

CH347F 的I2C接口

PIN脚I2C功能脚GPIO复用脚
11SCL-
12SDA-

CH347T 的I2C接口

PIN脚I2C功能脚GPIO复用脚
11SCLgpio3
12SDA-

CH347F/T支持至少4种I2C时钟:20kHz,100kHz,400kHz和750kHz。驱动配置的默认I2C时钟为100KHz,当前不支持动态修改该时钟频率,若需要修改可以在ch34x_mphsi_i2c_init函数中修改。

在Linux上增加对器件的驱动支持十分方便,只需要将该器件的设备驱动绑定到此Master驱动生成的总线下即可。举例:

modprobe bmi160_i2c
echo "bmi160 0x68" > /sys/bus/i2c/devices/i2c-$DEV/new_device

modprobe tcs3472
echo "tcs3472 0x29" > /sys/bus/i2c/devices/i2c-$DEV/new_device

驱动创建的I2C设备文件在/sys/bus/i2c/devices/i2c-$DEV/ 目录下

使用i2c-tools工具

1、加载驱动程序后,USB设备工作正常时,系统日志如下:

2、查看扩展的I2C Master的信息:

3、从步骤 1和2可以确认系统为USB设备分配的bus num(总线编号)

4、使用 i2cdetect 指令扫描 i2c device设备(使用eeprom演示)

5、使用 i2cset 和 i2cget 命令读写入1字节

 6、使用 i2ctransfer 命令读写多字节

更多的 ch347的master驱动特性,以及 i2c-tools 的用法可以交流补充~ 

<think>好的,用户想要找与LCD显示相关的字体库或资源,特别是下载链接和示例。首先,我需要回忆一下常见的LCD字体资源有哪些。通常,嵌入式系统里常用的字体格式是点阵字体,比如12x12、16x16、24x24像素的,因为这些字体适合在低分辨率的LCD屏幕上显示,而且不需要复杂的渲染引擎。 接下来,用户可能用的是STM32搭配HAL库,所以需要确认这些资源是否兼容。比如,Adafruit的GFX库支持多种LCD屏幕,并且提供了丰富的字体,不过可能需要适配到STM32的平台。另外,开源社区如GitHub可能会有很多项目分享字体库,比如U8g2或者LVGL的字体工具,这些可能都是用户需要的资源。 然后,用户提到的示例代码部分,可能需要一些具体的实现步骤,比如如何将字体文件集成到项目中,如何调用显示函数。这时候应该提供一些代码片段,例如使用HAL库配置FSMC来驱动LCD,然后调用字体显示函数。同时,要注意用户可能对如何生成自定义字体感兴趣,所以推荐一些在线工具,比如Dot Matrix Font Generator或者LVGL的在线字体转换器。 还要考虑到用户可能遇到的困难,比如字体文件过大,需要裁剪,或者如何优化显示速度。这时候需要提到使用工具提取需要的字符集,或者使用压缩算法。另外,中文显示可能涉及GB2312或者Unicode编码,需要相应的字库支持,比如使用全字库或者生成特定字符的子集。 最后,要确保提供的资源链接是可靠且常用的,避免用户下载到不安全的文件。GitHub、开源中国、Adafruit官方网站都是比较可信的来源。同时,示例代码部分要确保语法正确,特别是HAL库的相关配置,可能需要参考CubeMX的设置步骤,如FSMC的配置、引脚的初始化等。 总结一下,回答需要涵盖常用的字体库资源、生成工具、集成步骤以及示例代码,同时提醒用户注意常见问题和优化方法。这样用户能够根据指引找到合适的资源并成功应用到他们的项目中。</think>### LCD显示字体库资源及使用指南 #### 一、常用LCD字体库资源 1. **开源字体库** - **U8g2字体库**:支持多种LCD屏幕(如SSD1306、SH1106等),提供ASCII、汉字、符号的点阵字体,支持自定义尺寸[^1]。 - 下载地址:[U8g2 GitHub仓库](https://github.com/olikraus/u8g2) - **LVGL字体工具**:图形库LVGL内置字体生成器,可导出C语言格式的点阵字体文件,支持抗锯齿和Unicode字符[^1]。 - 工具链接:[LVGL Online Font Converter](https://lvgl.io/tools/fontconverter) - **Adafruit GFX Library**:适用于Adafruit LCD屏幕(如ILI9341),提供基础英文字体及扩展支持。 - 下载地址:[Adafruit GFX Library](https://github.com/adafruit/Adafruit-GFX-Library) 2. **中文字库资源** - **HZK16字库**:16x16像素汉字点阵字库,覆盖GB2312标准字符集,广泛用于嵌入式系统。 - 下载链接:[HZK16字库文件](https://github.com/embest-tech/STM32_LCD_Demo/tree/master/Fonts) - **文泉驿点阵字库**:开源中文字体,提供多尺寸点阵字体(如12x12、24x24)。 - 官网:[文泉驿项目](http://wenq.org/) 3. **自定义字体生成工具** - **Dot Matrix Font Generator**:生成任意尺寸的点阵字体,导出为C数组或BIN文件。 - 工具地址:[Dot Matrix Tool](https://www.amyunix.com/lab/en/dmfg/) - **LVGL Font Converter**:在线转换TTF字体为嵌入式格式,支持裁剪字符集以节省空间[^1]。 --- #### 二、字体集成与显示示例(STM32 HAL库) 1. **步骤1:添加字体文件到工程** 将字库文件(如`font_16x16.c`)放入项目目录,并在头文件中声明: ```c extern const uint8_t font_16x16[]; ``` 2. **步骤2:编写显示函数** 基于HAL库的LCD驱动,实现字符绘制函数: ```c void LCD_DrawChar(uint16_t x, uint16_t y, char ch, uint16_t color) { // 从字库中提取字符点阵数据 const uint8_t *char_data = &font_16x16[ch * 16]; for (int row = 0; row < 16; row++) { for (int col = 0; col < 8; col++) { if (char_data[row] & (0x80 >> col)) { LCD_DrawPixel(x + col, y + row, color); } } } } ``` 3. **步骤3:显示测试** 在主函数中调用显示函数: ```c LCD_Init(); // 初始化LCD LCD_DrawChar(10, 20, 'A', 0xFFFF); // 在(10,20)显示白色字母'A' ``` --- #### 三、注意事项 1. **字库存储优化** - 若Flash空间有限,可仅保留常用字符(如ASCII+部分汉字)。 - 使用压缩算法(如LZ77)存储字库,运行时解压[^1]。 2. **显示性能提升** - 启用DMA传输加速像素填充。 - 使用硬件加速的SPI/I2C接口驱动LCD。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PC技术小能手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值