自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pq的博客

记录一下学习的内容

  • 博客(244)
  • 资源 (1)
  • 收藏
  • 关注

原创 开源软件学习笔记 - little_flash + littlefs

类似SFUD,支持spi nand flash,对于nand flash,最好增加文件系统,可使用little_flash直接进行flash操作,但不推荐NAND FLASH直接操作,推荐使用文件系统littlefs。不过,注意这个little_flash是比较新的开源软件,还不是很完善,目前的版本是0.0.1。littlefs主要用在微控制器和flash上,是一种嵌入式文件系统。主要有3个特点:1)掉电恢复在写入时即使复位或者掉电也可以恢复到上一个正确的状态。2)擦写均衡。

2025-12-02 20:00:00 1375

原创 开源软件学习笔记 - 移植SFUD

SFUD(Serial Flash Universal Driver)是开源(可免费商用)的SPI Flash通用驱动库。硬件平台采用STM32F103,SPI接口的Nor Flash。可以参考SFUD里面的README.md里面的移植教程。

2025-11-25 20:00:00 777 1

原创 OrangePi Zero 3学习笔记(Android篇)11 - IR遥控器

ir的接口在13pin接口上,需要使用到扩展板。

2025-05-16 20:00:00 1022 1

原创 OrangePi Zero 3学习笔记(Android篇)10 - SPI和从设备

Zero 3的板子有2个SPI Master接口,其中SPI0接的是板载16MB大小的SPI Nor Flash,SPI1则是导出到26pin的接口上。spi和i2c有点不同,spi是直接生成spi虚拟设备,所以在dev里面会直接出现类似spidev0.0这样的设备。Linux是通过MTD操作nor flash。可以在dev里面查看spidev设备,可以看到spidev0.0和spidev1.1两个spi设备。

2025-05-15 20:00:00 802

原创 OrangePi Zero 3学习笔记(Android篇)9 - I2C和从设备

通过FT4232H的i2c接口驱动OLED,作为系统console的屏幕显示(失败)。最后是使用EEPROM验证。

2025-05-14 20:00:00 1466 1

原创 OrangePi Zero 3学习笔记(Android篇)8 - OpenOCD

将一个或多个FTDI GPIO控制的信号定义为数据和/或输出使能。可以参考函数ftdi_set_signal理解信号的意义。GPIO支持3种状态,0,1和高阻态。name: 信号的名字,特殊信号名称保留给 nTRST、nSRST 和 LED(用于闪烁)data: 数据的位置,不需要取反ndata: 对应data取反-oe/noe: 输出使能,和data意义一样,前缀n表示取反-alias/-nalisas: 这个是别名的意思,当GPIO被共用的时候使用。

2025-05-13 20:00:00 1187

原创 OrangePi Zero 3学习笔记(Android篇)7 - ftdi_sio

这部分需要基于之前修改的ftdi_sio驱动,增加MPSSE部分的代码。

2025-05-12 20:00:00 366

原创 OrangePi Zero 3学习笔记(Android篇)6 - hid-ft260

在Android中添加驱动模块ko文件,以hid-ft260为例。

2025-05-11 20:00:00 1069 1

原创 OrangePi Zero 3学习笔记(Android篇)5 - usbutils编译(更新lsusb)

在Ubuntu中,lsusb的源代码源自usbutils。而OrangePi Zero 3中lsusb的位置可以看文件H618-Android12-Src/external/toybox/Android.bp,

2025-05-10 20:00:00 537

原创 OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)

相应的代码最好是在Ubuntu中先编译通过(即获取到x86版本的),以版本3.2.14为例。

2025-05-09 20:00:00 1057 1

原创 OrangePi Zero 3学习笔记(Android篇)3 - 串口

除了默认的UART用于shell,Zero 3的24pin接口还有一路UART5:将这个脚用线短路起来测试,即红色排针(2个5V接口)那排排针往下数4-5脚短路。

2025-05-08 20:00:00 1489 1

原创 OrangePi Zero 3学习笔记(Android篇)2 - 第一个C程序

在AOSP里面添加一个C或C++程序,这个程序在Android中需要通过shell的方式运行。

2025-05-07 20:00:00 1150 1

原创 OrangePi Zero 3学习笔记(Android篇)1 - 搭建环境

编译环境需要使用Ubuntu22.04,在Windows环境下使用Virtual Box V7.0.8 r156879 (Qt5.15.2)虚拟系统。

2025-05-06 20:00:00 1853 3

原创 ftdi_sio应用学习笔记 5 - SPI

SPI的SCK/MOSI/MISO分别对应(A/B)D0/D1/D2,其他IO作为CS。和I2C一样,最大支持2路MPSSE通道,一路MPSSE最大13路SPI。定义spi设备的信息结构体。

2024-11-24 18:06:37 535

原创 ftdi_sio应用学习笔记 4 - I2C

I2C设备最多有6个(FT232H),其他为2个。和之前的设备一样,定义个I2C结构体记录找到的设备。可以看到该设备(FT4232H)的接口0有2个i2c设备。

2024-11-22 20:00:00 2235

原创 ftdi_sio应用学习笔记 3 - GPIO

对于FTDI全速设备普遍有CBUS管脚,例如FT230X,有4路CBUS型GPIO。通过官方工具FT_PROG将对应的CBUS改为GPIO的模式,否则在Linux中是看不到对应的GPIO的,例如将CBUS2和CBUS3改为GPIO。然后在Linux里面进入root模式,可以先看一下/sys/bus/gpio/devices下有几个gpiochip这里是gpiochip0,然后运行gpioinfo 0查看该chip的gpio使用信息。

2024-11-21 20:00:00 1301

原创 ftdi_sio应用学习笔记 2 - 操作串口

对于FTDI设备,设置自定义的波特率,需要先设置波特率为B38400然后用ioctl设置ASYNC_SPD_CUST标识和custom_divisorreturn -1;return -1;return -1;} else {

2024-11-20 20:00:00 1377

原创 ftdi_sio应用学习笔记 1 - 查找串口

对于USB转串口的应用,有时候需要查找特定的串口编号,比如通过VID/PID,Serial Number等特殊属性找到特定的串口编号。然后前面4个文件夹1-1:1.0/1-1:1.1/1-1:1.2/1-1:1.3分别对应4个串口,例如1-1:1.0可以看到ttyUSB0文件夹。定义一个结构体记录设备信息。

2024-11-19 20:00:00 613

原创 ftdi_sio驱动学习笔记 8 - 增加MPSSE SPI

增加SPI的方式类似I2C,每一路MPSSE的前面3个IO作为SPI口的SCK,MOSI和MISO,而其他的IO就可以作为SPI的CS脚控制不同的SPI设备。因此,对于FT232H/FT2232H来说,一路MPSSE可以支持13个SPI设备,而FT4232H一路MPSSE可以支持5个SPI设备。

2024-09-30 20:00:00 1539

原创 ftdi_sio驱动学习笔记 7 - 增加MPSSE I2C

定义GPIO起始编号定义每组I2C对应的SCL和SDA的编号定义命令缓存更新的宏定义int i;for (i = 0;i++)\{\}\}while(0)gpioCommand(ch)是为了获取到该组I2C对应的GPIO在低位还是在高位字节中,返回0或1。而i2cCommandWrite是写入命令到命令缓冲中。

2024-09-29 20:00:00 2009

原创 ftdi_sio驱动学习笔记 6 - 增加MPSSE GPIO

之前GPIO是基于CBUS的模式,对于H系列芯片还支持MPSSE模式。注意CBUS模式和MPSSE模式不能同时使用。基本是根据CBUS模式修改。

2024-09-28 20:00:00 1156

原创 ftdi_sio驱动学习笔记 5 - 读写操作

实际读写并不是ftdi_sio操作的,是通过内核标准的usb serial实现。

2024-09-27 20:00:00 626

原创 ftdi_sio驱动学习笔记 4 - 串口操作

并不是所有的串口操作都有实现。

2024-09-26 20:30:00 1314

原创 ftdi_sio驱动学习笔记 3 - 端口操作

int (*port_probe)(struct usb_serial_port *port): 端口探测函数ftdi_port_probe,用于初始化单个端口。void (*port_remove)(struct usb_serial_port *port): 端口移除函数ftdi_port_removeftdi_port_remove,用于清理单个端口。

2024-09-25 20:00:00 1527

原创 ftdi_sio驱动学习笔记 2 - probe

这个接口函数是FTDI设备插入时调用的函数。程序ftdi_probe里面主要是根据不同的VID和PID设备做了不同的probe函数。这一步最大的作用是probe特殊的一些应用,对于普通的串口应用,实际没有做任何处理,服从默认的初始化。

2024-09-24 20:00:00 344

原创 ftdi_sio驱动学习笔记 1 - 注册与注销

ftdi_sio是Linux内核中对FTDI设备的USB转串口的驱动程序。和ftdi_sio有关的源文件是:ftdi_sio.c、ftdi_sio.h和ftdi_sio_ids.h。可以新建一个makefile文件命令make是编译生成ftdi_sio.ko,sudo make install是安装。

2024-09-23 20:30:00 1829

原创 hid-ft260驱动学习笔记 5 - ft260_i2c_probe

这个函数是i2c的接口probe函数。

2024-07-11 20:00:00 1015

原创 hid-ft260驱动学习笔记 4 - ft260_uart_ops

在之前笔记1中有提到tty设备初始化时注册串口数据的读写等操作的结构体ft260_uart_ops。通过这个结构体,不同的硬件设备可以实现相同的串口操作接口。

2024-07-10 20:00:00 690

原创 hid-ft260驱动学习笔记 3 - ft260_uart_probe

上一节中讲到ft260_probe里面会根据接口的类型做不同的probe,这里详细了解一下uart部分是如何初始化的。

2024-07-09 20:00:00 1178

原创 hid-ft260驱动学习笔记 2 - probe

上一节中有讲到ft260_driver的结构体,其中成员函数probe就是这个probe函数。当设备插入系统,系统通过id_table判断设备是否符合当前驱动,符合则调用probe函数。这里对应FT260的VID和PID。

2024-07-07 19:11:26 616

原创 hid-ft260驱动学习笔记 1 - 驱动模块注册与注销

hid-ft260.c的最底部可以看到该驱动的注册与注销接口的申明。module_init即模块注册接口,当Linux中运行lsmod或modprobe安装驱动时系统会调用这个函数。module_exit是模块的注销接口,当Linux中运行rmmod卸载驱动时系统会调用这个函数。MODULE_LICENSE用来指定模块许可协议,一般是GPL,这里的GPL v2表示GNU通用公共许可证第2版(GNU General Public License version 2)。

2024-07-06 11:37:11 1044

原创 Linux FT260驱动内核学习笔记

系统采用Ubuntu 22,X86 64。

2024-05-12 20:00:00 1554

原创 Ubuntu编译ftdi_sio

为了解决Ubuntu插入FTDI设备可能出现没有ttyUSB*设备的问题。这种错误有可能是因为模块是为不同版本的内核编译的,或者内核中缺失了模块所依赖的某些功能。

2024-05-11 20:30:00 883

原创 libftdi1学习笔记 8 - MPSSE SPI优化速度

如果不使用模拟的方式,则SCK,MOSI,MISO必须固定。通过这3个IO判断是哪种模式= 2)//GPIO模拟的方式else。

2024-04-20 20:00:00 375

原创 libftdi1学习笔记 7 - MPSSE I2C

I2C(主)采用2个或3个GPIO模拟的方式实现,如果sdao等于sdai相等,表示SDA是双向的,否则一个GPIO作为SDA输出,一个GPIO作为SDA输入。如果电平不想转换方向则选择3个GPIO的方式。注意,scl和sda必须在同一组内,比如scl在ACBUS0~7,那么sda也必须是这组内的,不能是ADBUS0~ADBUS7。freq表示I2C的频率,0表示最快速度,值越大越慢。一般I2C可以接多个从设备,所以这里只定义了2组I2C,如果需要更多,修改数组大小即可。

2024-04-19 20:00:00 1436

原创 libftdi1学习笔记 6 - MPSSE QSPI

QSPI采用4根线为数据口,SCK和CS保留同样的功能,一般4个数据线采用MSB的方式发送数据,即高位在前。QSPI只能是半双工工作。

2024-04-18 20:00:00 550

原创 libftdi1学习笔记 5 - SPI Nor Flash

基于MPSSE SPI实现Nor Flash的读写。也定义两组flash。定义一个结构体记录flash的属性spiPort:表示该flash使用哪组SPIpCSEnable:对应CS脚控制的接口函数manufactor:该flash的生产商size:该flash的大小addrSize:该flash的地址宽度。

2024-04-17 20:00:00 857

原创 libftdi1学习笔记 4 - MPSSE SPI

与官方的方式不同,这里采用纯GPIO模式的方式实现SPI,这样可以定义任意GPIO为SPI,也可以实现QSPI。sck/mosi_io0/miso_io1/io2/io3分别对应SPI/QSPI的io,同样,所有io都必须属于同一组。注意,CS脚单独控制,用GPIO的方式控制。mode则表示spi的模式由于多个SPI从设备可以共用sck和数据口,只使用不同的cs即可。所以这里只定义2个spi设备。

2024-04-16 20:00:00 1875

原创 libftdi1学习笔记 3 - MPSSE GPIO

MPSSE,即Multi-Protocol Synchronous Serial Engine,是FTDI公司推出的一种多协议同步串行引擎,目前仅FT232H、FT2232H、FT4232H(A)支持。FT232H支持1路MPSSE,GPIO口是ADBUS0-ADBUS7、ACBUS0-ACBUS7,一共16个GPIO(注意ACBUS8,ACBUS9不可控)。

2024-04-15 20:00:00 1932

原创 libftdi1学习笔记 2 - 串口

打开ftdi USB设备后就可以配置串口参数并进行通信。FTDI设备默认是串口的模式。

2024-04-14 20:00:00 897

FT4222H工具的源代码

C#格式,不保证没问题,学习使用,最好免费下载,可以私信给我分享。

2025-06-12

FT4222H.zip

测试FT4222H的各项功能(SPI Master,SPI Slave, I2C Master, I2C Slave, GPIO),在Windows中运行

2019-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除