自定义博客皮肤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的博客

记录一下学习的内容

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

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

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

2025-05-16 20:00:00 743 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 363

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

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

2025-05-14 20:00:00 936 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 1002

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

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

2025-05-12 20:00:00 262

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

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

2025-05-11 20:00:00 940 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 415

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

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

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

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

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

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

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

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

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

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

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

2025-05-06 20:00:00 1162 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 369

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

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

2024-11-22 20:00:00 1906

原创 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 1104

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

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

2024-11-20 20:00:00 1140

原创 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 453

原创 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 1077

原创 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 1765

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

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

2024-09-28 20:00:00 946

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

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

2024-09-27 20:00:00 457

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

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

2024-09-26 20:30:00 1018

原创 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 1241

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

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

2024-09-24 20:00:00 252

原创 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 1426

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

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

2024-07-11 20:00:00 881

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

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

2024-07-10 20:00:00 616

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

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

2024-07-09 20:00:00 1045

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

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

2024-07-07 19:11:26 549

原创 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 907

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

系统采用Ubuntu 22,X86 64。

2024-05-12 20:00:00 1324

原创 Ubuntu编译ftdi_sio

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

2024-05-11 20:30:00 688

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

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

2024-04-20 20:00:00 284

原创 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 1261

原创 libftdi1学习笔记 6 - MPSSE QSPI

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

2024-04-18 20:00:00 413

原创 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 719

原创 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 1709

原创 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 1547

原创 libftdi1学习笔记 2 - 串口

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

2024-04-14 20:00:00 738

原创 libftdi1学习笔记 1 - 打开/关闭设备

libftdi1是一个升级版本的库(旧的版本是libftdi),用于与FTDI芯片进行通信。在Ubuntu系统中可以先安装好ibftdi1库。其他系统可以下载源代码编译安装。下载一个通用makefile。新建一个libftdi1-example的文件夹,然后在该文件夹内创建上面的makefile和main.c。下载libftdi1的源代码,找到ftdi.h文件,拷贝到当前文件夹。编辑main.c运行make编译,此时应该可以编译通过。

2024-04-13 20:00:00 2115

原创 Android下使用OpenOCD

主要是使用NDK编译OpenOCD源码。最好先在Ubuntu中编译通过OpenOCD。

2024-03-10 20:00:00 848

FT4222H工具的源代码

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

2025-06-12

FT4222H.zip

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

2019-11-20

空空如也

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

TA关注的人

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