- 博客(242)
- 资源 (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驱动学习笔记 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驱动学习笔记 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
原创 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学习笔记 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
FT4222H.zip
2019-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人