本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。
关于开发板配套的触摸屏参数可查阅《5.0寸触摸屏面板说明》,触摸面板配套的触摸控制芯片可查阅《电容触控芯片GT9157 Datasheet》及《gt91x编程指南》配套资料获知。对于7寸电容屏,请查阅《电容触摸芯片GT911》相关的数据手册,7寸电容屏的驱动原理与5寸电容屏的类似,仅写入触摸芯片的配置参数有细节差异。
在前面我们学习了如何使用LTDC外设控制液晶屏并用它显示各种图形及文字,利用液晶屏,STM32的系统具有了高级信息输出功能,然而我们还希望有用户友好的输入设备,触摸屏是不二之选,目前大部分电子设备都使用触摸屏配合液晶显示器组成人机交互系统。
29.1 触摸屏简介
触摸屏又称触控面板,它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要分为电阻式触摸屏和电容式触摸屏。相对来说,电阻屏造价便宜,能适应较恶劣的环境,但它只支持单点触控(一次只能检测面板上的一个触摸位置),触摸时需要一定的压力,使用久了容易造成表面磨损,影响寿命;而电容屏具有支持多点触控、检测精度高的特点,电容屏通过与导电物体产生的电容效应来检测触摸动作,只能感应导电物体的触摸,湿度较大或屏幕表面有水珠时会影响电容屏的检测效果。
图 291单电阻屏、电阻液晶屏(带触摸控制芯片)
图 292单电容屏、电容液晶屏(带触摸控制芯片)
图 291和图 292分别是带电阻触摸屏及电容触摸屏的两种屏幕,从外观上并没有明显的区别,区分电阻屏与电容屏最直接的方法就是使用绝缘物体点击屏幕,因为电阻屏通过压力能正常检测触摸动作,而该绝缘物体无法影响电容屏所检测的信号,因而无法检测到触摸动作。目前电容式触摸屏被大部分应用在智能手机、平板电脑等电子设备中,而在汽车导航、工控机等设备中电阻式触摸屏仍占主流。
29.1.1 电阻式触摸屏检测原理
电阻式的触摸屏结构见图 293。它主要由表面硬涂层、两个ITO层、间隔点以及玻璃底层构成,这些结构层都是透明的,整个触摸屏覆盖在液晶面板上,透过触摸屏可看到液晶面板。表面涂层起到保护作用,玻璃底层起承载的作用,而两个ITO层是触摸屏的关键结构,它们是涂有铟锡金属氧化物的导电层。两个ITO层之间使用间隔点使两层分开,当触摸屏表面受到压力时,表面弯曲使得上层ITO与下层ITO接触,在触点处连通电路。
图 293 电阻式触摸屏结构
两个ITO涂层的两端分别引出X-、X+、Y-、Y+四个电极,见图 294,这是电阻屏最常见的四线结构,通过这些电极,外部电路向这两个涂层可以施加匀强电场或检测电压。
图 294 XY的ITO层结构
当触摸屏被按下时,两个ITO层相互接触,从触点处把ITO层分为两个电阻,且由于ITO层均匀导电,两个电阻的大小与触点离两电极的距离成比例关系,利用这个特性,可通过以下过程来检测坐标,这也正是电阻触摸屏名称的由来,见图 295。
计算X坐标时,在X+电极施加驱动电压Vref,X-极接地,所以X+与X-处形成了匀强电场,而触点处的电压通过Y+电极采集得到,由于ITO层均匀导电,触点电压与Vref之比等于触点X坐标与屏宽度之比,从而:
计算Y坐标时,在Y+电极施加驱动电压Vref,Y-极接地,所以Y+与Y-处形成了匀强电场,而触点处的电压通过X+电极采集得到,由于ITO层均匀导电,触点电压与Vref之比等于触点Y坐标与屏高度之比,从而:
图 295 触摸检测等效电路
为了方便检测触摸的坐标,一些芯片厂商制作了电阻屏专用的控制芯片,控制上述采集过程、采集电压,外部微控制器直接与触摸控制芯片通讯直接获得触点的电压或坐标。如图 291中我们生产的这款3.2寸电阻触摸屏就是采用XPT2046芯片作为触摸控制芯片,XPT2046芯片控制4线电阻触摸屏,STM32与XPT2046采用SPI通讯获取采集得的电压,然后转换成坐标。
29.1.2 电容式触摸屏检测原理
与电阻式触摸屏不同,电容式触摸屏不需要通过压力使触点变形,再通过触点处电压值来检测坐标,它的基本原理和前面定时器章节中介绍的电容按键类似,都是利用充电时间检测电容大小,从而通过检测出电容值的变化来获知触摸信号。见图 296,电容屏的最上层是玻璃(不会像电阻屏那样形变),核心层部分也是由ITO材料构成的,这些导电材料在屏幕里构成了人眼看不见的静电网,静电网由多行X轴电极和多列Y轴电极构成,两个电极之间会形成电容。触摸屏工作时,X轴电极发出AC交流信号,而交流信号能穿过电容,即通过Y轴能感应出该信号,当交流电穿越时电容会有充放电过程,检测该充电时间可获知电容量。若手指触摸屏幕,会影响触摸点附近两个电极之间的耦合,从而改变两个电极之间的电容量,若检测到某电容的电容量发生了改变,即可获知该电容处有触摸动作(这就是为什么它被称为电容式触摸屏以及绝缘体触摸没有反应的原因)。
图 296 电容触摸屏基本原理
电容屏ITO层的结构见图 297,这是比较常见的形式,电极由多个菱形导体组成,生产时使用蚀刻工艺在ITO层生成这样的结构。
图 297 电容触摸屏的ITO层结构
X轴电极与Y轴电极在交叉处形成电容,即这两组电极构成了电容的两极,这样的结构覆盖了整个电容屏,每个电容单元在触摸屏中都有其特定的物理位置,即电容的位置就是它在触摸屏的XY坐标。检测触摸的坐标时,第1条X轴的电极发出激励信号,而所有Y轴的电极同时接收信号,通过检测充电时间可检测出各个Y轴与第1条X轴相交的各个互电容的大小,各个X轴依次发出激励信号,重复上述步骤,即可得到整个触摸屏二维平面的所有电容大小。当手指接近时,会导致局部电容改变,根据得到的触摸屏电容量变化的二维数据表,可以得知每个触摸点的坐标,因此电容触摸屏支持多点触控。
其实电容触摸屏可看作是多个电容按键组合而成,就像机械按键中独立按键和矩阵按键的关系一样,甚至电容触摸屏的坐标扫描方式与矩阵按键都是很相似的。
29.2 电容触摸屏控制芯片
相对来说,电容屏的坐标检测比电阻屏的要复杂,因而它也有专用芯片用于检测过程,下面我们以本章重点讲述的电容屏使用的触控芯片GT9157为例进行讲解,关于它的详细说明可从《gt91x编程指南》和《电容触控芯片GT9157》文档了解。(7寸屏使用GT911触控芯片,原理类似)
29.2.1 GT9157芯片的引脚
GT9157芯片的外观可以图 292中找到,其内部结构框图见图 298。
图 298 GT9157结构框图
该芯片对外引出的信号线介绍如下:
表 291 GT9157信号线说明
若您把电容触摸屏与液晶面板分离开来,在触摸面板的背面,可看到它的边框有一些电路走线,它们就是触摸屏ITO层引出的XY轴信号线,这些信号线分别引出到GT9157芯片的Driving channels及Sensing channels引脚中。也正是因为触摸屏有这些信号线的存在,所以手机厂商追求的屏幕无边框是比较难做到的。
29.2.2 上电时序与I2C设备地址
GT9157触控芯片有两个备选的I2C通讯地址,这是由芯片的上电时序设定的,见图 299。上电时序有Reset引脚和INT引脚生成,若Reset引脚从低电电平转变到高电平期间,INT引脚为高电平的时候,触控芯片使用的I2C设备地址为0x28/0x29(8位写、读地址),7位地址为0x14;若Reset引脚从低电电平转变到高电平期间,INT引脚一直为低电平,则触控芯片
图 299 GT9157的上电时序及I2C设备地址
29.2.3 寄存器配置
上电复位后,GT9157芯片需要通过外部主控芯片加载寄存器配置,设定它的工作模式,这些配置通过I2C信号线传输到GT9157,它的配置寄存器地址都由两个字节来表示,这些寄存器的地址从0x8047-0x8100,一般来说,我们实际配置的时候会按照GT9157生产厂商给的默认配置来控制芯片,仅修改部分关键寄存器,其中部分寄存器说明见图 2910。
图 2910 部分寄存器配置说明
这些寄存器介绍如下:
(1) 配置版本寄存器
0x8047配置版本寄存器,它包含有配置文件的版本号,若新写入的版本号比原版本大,或者版本号相等,但配置不一样时,才会更新配置文件到寄存器中。其中配置文件是指记录了寄存器0x8048-0x80FE控制参数的一系列数据。
为了保证每次都更新配置,我们一般把配置版本寄存器设置为"0x00",这样版本号会默认初始化为'A',这样每次我们修改其它寄存器配置的时候,都会写入到GT9157中。
(2) X、Y分辨率
0x8048-0x804B寄存器用于配置触控芯片输出的XY坐标的最大值,为了方便使用,我们把它配置得跟液晶面板的分辨率一致,这样就能使触控芯片输出的坐标一一对应到液晶面板的每一个像素点了。
(3) 触点个数
0x804C触点个数寄存器用于配置它最多可输出多少个同时按下的触点坐标,这个极限值跟触摸屏面板有关,如我们本章实验使用的触摸面板最多支持5点触控。
(4) 模式切换
0x804D模式切换寄存器中的X2Y位可以用于交换XY坐标轴;而INT触发方式位可以配置不同的触发方式,当有触摸信号时,INT引脚会根据这里的配置给出触发信号。
(5) 配置校验
0x80FF配置校验寄存器用于写入前面0x8047-0x80FE寄存器控制参数字节之和的补码,GT9157收到前面的寄存器配置时,会利用这个数据进行校验,若不匹配,就不会更新寄存器配置。
(6) 配置更新
0x8100配置更新寄存器用于控制GT9157进行更新,传输了前面的寄存器配置并校验通过后,对这个寄存器写1,GT9157会更新配置。
29.2.4 读取坐标信息
坐标寄存器
上述寄存器主要是由外部主控芯片给GT9157写入配置的,而它则使用图 2911中的寄存器向主控器反馈信息。
图 2911 坐标信息寄存器
(1) 产品ID及版本
0x8140-0x8143 寄存器存储的是产品ID,上电后我们可以利用I2C读取这些寄存器的值来判断I2C是否正常通讯,这些寄存器中包含有"9157"字样; 而0x8144-0x8145则保存有固件版本号,不同版本可能不同。
(2) X/Y分辨率
0x8146-0x8149寄存器存储了控制触摸屏的分辨率,它们的值与我们前面在配置寄存器写入的XY控制参数一致。所以我们可以通过读取这两个寄存器的值来确认配置参数是否正确写入。
(3) 状态寄存器
0x814E地址的是状态寄存器,它的Buffer status位存储了坐标状态,当它为1时,表示新的坐标数据已准备好,可以读取,0表示未就绪,数据无效,外部控制器读取完坐标后,须对这个寄存器位写0 。number of touch points位表示当前有多少个触点。其余数据位我们不关心。
(4) 坐标数据
从地址0x814F-0x8156的是触摸点1的坐标数据,从0x8157-0x815E的是触摸点2的坐标数据,依次还有存储3-10触摸点坐标数据的寄存器。读取这些坐标信息时,我们通过它们的track id来区分笔迹,多次读取坐标数据时,同一个track id号里的数据属于同一个连续的笔划轨迹。
读坐标流程
上电、配置完寄存器后,GT9157就会开监测触摸屏,若我们前面的配置使INT采用中断上升沿报告触摸信号的方式,整个读取坐标信息的过程如下:
(1) 待机时INT引脚输出低电平;
(2) 有坐标更新时,INT引脚输出上升沿;
(3) INT输出上升沿后,INT 脚会保持高直到下一个周期(该周期可由配置 Refresh_Rate 决定)。外部主控器在检测到INT的信号后,先读取状态寄存器(0x814E)中的number of touch points位获当前有多少个触摸点,然后读取各个点的坐标数据,读取完后将 buffer status位写为 0。外部主控器的这些读取过程要在一周期内完成,该周期由0x8056地址的Refresh_Rate寄存器配置;
(4) 上一步骤中INT输出上升沿后,若主控未在一个周期内读走坐标,下次 GT9157 即使检测到坐标更新会再输出一个 INT 脉冲但不更新坐标;
(5) 若外部主控一直未读走坐标,则 GT9 会一直输出 INT 脉冲。
29.3 电容触摸屏—触摸画板实验
本小节讲解如何驱动电容触摸屏,并利用触摸屏制作一个简易的触摸画板应用。
学习本小节内容时,请打开配套的"电容触摸屏—触摸画板"工程配合阅读。
29.3.1 硬件设计
图 2912 液晶屏实物图
本实验使用的液晶电容屏实物见图 2719,屏幕背面的PCB电路对应图 2721、图 2725中的原理图,分别是触摸屏接口及排针接口。
我们这个触摸屏出厂时就与GT9157芯片通过柔性电路板连接在一起了,柔性电路板从GT9157芯片引出VCC、GND、SCL、SDA、RSTN及INT引脚,再通过FPC座子引出到屏幕的PCB电路板中,PCB电路板加了部分电路,如I2C的上拉电阻,然后把这些引脚引出到屏幕右侧的排针处,方便整个屏幕与外部器件相连。
图 2913 电容屏接口
以上是我们STM32F429实验板使用的5寸屏原理图,它通过屏幕上的排针接入到实验板的液晶排母接口,与STM32芯片的引脚相连,连接见图 2725。
图 2914 屏幕与实验板的引脚连接
图 2725中35-38号引脚即电容触摸屏相关的控制引脚。
以上原理图可查阅《LCD5.0-黑白原理图》及《秉火F429开发板黑白原理图》文档获知,若您使用的液晶屏或实验板不一样,请根据实际连接的引脚修改程序。
29.3.2 软件设计
本工程中的GT9157芯片驱动主要是从官方提供的Linux驱动修改过来的,我们把这部分文件存储到"gt9xx.c"及"gt9xx.h"文件中,而这些驱动的底层I2C通讯接口我们存储到了"bsp_i2c_touch.c"及"bsp_i2c_touch.h"文件中,这些文件也可根据您的喜好命名,它们不属于STM32标准库的内容,是由我们自己根据应用需要编写的。在我们提供的资料《gt9xx_1.8_drivers.zip》压缩包里有官方的原Linux驱动,感兴趣的读者可以对比这些文件,了解如何移植驱动。
1. 编程要点
(1) 分析官方的gt9xx驱动,了解需要提供哪些底层接口;
(2) 编写底层驱动接口;
(3) 利用gt9xx驱动,获取触摸坐标;
(4) 编写测试程序检验驱动。
2. 代码分析
触摸屏硬件相关宏定义
根据触摸屏与STM32芯片的硬件连接,我们把触摸屏硬件相关的配置都以宏的形式定义到"bsp_i2c_touch.h"文件中,见代码清单 242。
代码清单 291 触摸屏硬件配置相关的宏(bsp_i2c_touch.h文件)
1 /*设定使用的电容屏IIC设备地址*/
2 #define GTP_ADDRESS 0xBA
3
4 #define I2CT_FLAG_TIMEOUT ((uint32_t)0x1000)
5 #define I2CT_LONG_TIMEOUT ((uint32_t)(10 * I2CT_FLAG_TIMEOUT))
6
7 /*I2C引脚*/
8 #define GTP_I2C I2C2
9 #define GTP_I2C_CLK RCC_APB1Periph_I2C2
10 #define GTP_I2C_CLK_INIT RCC_APB1PeriphClockCmd
11
12 #define GTP_I2C_SCL_PIN GPIO_Pin_4
13 #define GTP_I2C_SCL_GPIO_PORT GPIOH
14 #define GTP_I2C_SCL_GPIO_CLK RCC_AHB1Periph_GPIOH
15 #define GTP_I2C_SCL_SOURCE GPIO_PinSource4
16 #define GTP_I2C_SCL_AF GPIO_AF_I2C2
17
18 #define GTP_I2C_SDA_PIN GPIO_Pin_5
19 #define GTP_I2C_SDA_GPIO_PORT GPIOH
20 #define GTP_I2C_SDA_GPIO_CLK RCC_AHB1Periph_GPIOH
21 #define GTP_I2C_SDA_SOURCE GPIO_PinSource5
22 #define GTP_I2C_SDA_AF GPIO_AF_I2C2
23
24 /*复位引脚*/
25 #define GTP_RST_GPIO_PORT GPIOD
26 #define GTP_RST_GPIO_CLK RCC_AHB1Periph_GPIOD
27 #define GTP_RST_GPIO_PIN GPIO_Pin_11
28 /*中断引脚*/
29 #define GTP_INT_GPIO_PORT GPIOD
30 #define GTP_INT_GPIO_CLK RCC_AHB1Periph_GPIOD
31 #define GTP_INT_GPIO_PIN GPIO_Pin_13
32 #define GTP_INT_EXTI_PORTSOURCE EXTI_PortSourceGPIOD
33 #define GTP_INT_EXTI_PINSOURCE EXTI_PinSource13
34 #define GTP_INT_EXTI_LINE EXTI_Line13
35 #define GTP_INT_EXTI_IRQ EXTI15_10_IRQn
36 /*中断服务函数*/
37 #define GTP_IRQHandler EXTI15_10_IRQHandler
以上代码根据硬件的连接,把与触摸屏通讯使用的引脚号、引脚源以及复用功能映射都以宏封装起来。在这里还定义了与GT9157芯片通讯的I2C设备地址,该地址是一个8位的写地址,它是由我们的上电时序决定的。
初始化触摸屏控制引脚
利用上面的宏,编写LTDC的触摸屏控制引脚的初始化函数,见代码清单 243。
代码清单 292 触摸屏控制引脚的GPIO初始化函数(bsp_i2c_touch.c文件)
1 /**
2 * @brief 触摸屏 I/O配置
3 * @param 无
4 * @retval 无
5 */
6 static void I2C_GPIO_Config(void)
7 {
8 GPIO_InitTypeDef GPIO_InitStructure;
9
10 /*使能I2C时钟 */
11 GTP_I2C_CLK_INIT(GTP_I2C_CLK, ENABLE);
12
13 /*使能触摸屏使用的引脚的时钟*/
14 RCC_AHB1PeriphClockCmd(GTP_I2C_SCL_GPIO_CLK | GTP_I2C_SDA_GPIO_CLK|
15 GTP_RST_GPIO_CLK|GTP_INT_GPIO_CLK, ENABLE);
16
17 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
18
19 /* 配置I2C_SCL源*/
20GPIO_PinAFConfig(GTP_I2C_SCL_GPIO_PORT, GTP_I2C_SCL_SOURCE, GTP_I2C_SCL_AF);
21 /* 配置I2C_SDA 源*/
22GPIO_PinAFConfig(GTP_I2C_SDA_GPIO_PORT, GTP_I2C_SDA_SOURCE, GTP_I2C_SDA_AF);
23
24 /*配置SCL引脚 */
25 GPIO_InitStructure.GPIO_Pin = GTP_I2C_SCL_PIN;
26 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
27 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
28 GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
29 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
30 GPIO_Init(GTP_I2C_SCL_GPIO_PORT, &GPIO_InitStructure);
31
32 /*配置SDA引脚 */
33 GPIO_InitStructure.GPIO_Pin = GTP_I2C_SDA_PIN;
34 GPIO_Init(GTP_I2C_SDA_GPIO_PORT, &GPIO_InitStructure);
35
36 /*配置RST引脚,下拉推挽输出 */
37 GPIO_InitStructure.GPIO_Pin = GTP_RST_GPIO_PIN;
38 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
39 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
40 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
41 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
42 GPIO_Init(GTP_RST_GPIO_PORT, &GPIO_InitStructure);
43
44 /*配置 INT引脚,下拉推挽输出,方便初始化 */
45 GPIO_InitStructure.GPIO_Pin = GTP_INT_GPIO_PIN;
46 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
47 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
48 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
49 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //设置为下拉,方便初始化
50 GPIO_Init(GTP_INT_GPIO_PORT, &GPIO_InitStructure);
51 }
以上函数初始化了触摸屏用到的I2C信号线,并且把RST及INT引脚也初始化成了下拉推挽输出模式,以便刚上电的时候输出上电时序,设置触摸屏的I2C设备地址。
配置I2C的模式
接下来需要配置I2C的工作模式,GT9157芯片使用的是标准7位地址模式的I2C通讯,所以I2C这部分的配置跟我们在EEPROM实验中的是一样的,不了解这部分内容的请阅读EEPROM章节,见代码清单 244。
代码清单 293 配置I2C工作模式(bsp_i2c_touch.c文件)
1
2 /* STM32 I2C 快速模式 */
3 #define I2C_Speed 400000
4
5 /* 这个地址只要与STM32外挂的I2C器件地址不一样即可 */
6 #define I2C_OWN_ADDRESS7 0x0A
7
8 /**
9 * @brief I2C 工作模式配置
10 * @param 无
11 * @retval 无
12 */
13 static void I2C_Mode_Config(void)
上一篇:第26章 FMC—扩展外部SDRAM—零死角玩转STM32-F429系列
下一篇:第30章 ADC—电压采集—零死角玩转STM32-F429系列
推荐阅读
史海拾趣
为了满足不同客户的需求,Frequency Sources公司不断丰富产品线,推出了包括晶体振荡器、温补晶振、压控晶振等在内的多种频率源产品。同时,公司还加强了与上下游企业的合作,通过产业链整合实现了资源的优化配置和成本的降低。这种产品多样化和产业链整合的策略不仅提升了公司的综合竞争力,还为客户提供了更加全面和优质的解决方案。
ETI Systems一直将产品品质视为企业的生命线。公司严格把控从原材料采购到产品生产的每一个环节,确保每一件产品都符合高标准的质量要求。正是这种对品质的执着追求,让ETI Systems的产品在市场上赢得了良好的口碑和广泛的认可。同时,公司也建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。
随着产品质量的不断提升和市场份额的逐步扩大,东晶电子开始将目光投向国际市场。公司积极参与国际展会,与全球知名电子企业建立合作关系,产品出口到欧洲、北美、东南亚等多个国家和地区。同时,东晶电子还与国际知名厂商进行技术交流和合作研发,不断提升自身技术水平,以适应全球市场的竞争需求。
了解半导体的基本知识,掌握PN结的单向导电性;掌握普通二极管伏安特性,熟悉其工作特点及主要参数;掌握二极管理想模型、恒压降模型及其应用、理解二极管电路图解法和微变等效电路分析法;… 查看全部问答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 PCA82C251 24V系统的CAN收发器 用PCA82C251芯片做24V的收发器不知道各位有没有做过呢,我也没有,不过看了感觉是很不、错啊 … 查看全部问答∨ |
今天,我想和大家探讨一下彩电的另类检修方法——模糊检修法(不知这个词语使用是否恰当,请同行们读后斧正)。提到“模糊”,我想大家都不陌生,模糊控制在应用上就十分广泛,如模糊洗衣机、模糊冰箱、模糊相机等。那么,彩电的维修能“模糊”吗? ...… 查看全部问答∨ |
|
请教各位大虾: 我想在MAC OS 上写一个驱动,将实际的USB设备虚拟出两个串口(Serial Com port),然后用应用软件可以向这两个虚拟的串口读写数据,与通过USB Cable相连的目标设备(如手机,3G卡)进行通讯。Linux上已有开源的驱动U ...… 查看全部问答∨ |
ARM9 uart实验的时候编译不能通过 错误提示如下 请问是什么问题啊? 2410slib.s Link ...... .\\debug\\2410lib.o(.text+0x120): In function `Delay\': D:/software/JXARM2410V2.2/examples/common/2410lib.c:53: undefined reference to `__divsi3\' .\\debug\\2410lib.o(.text+0x35c): In function `Uart_Ini ...… 查看全部问答∨ |
今天我看了别人写的一个源代码,里面有两个.ui文件,一个工程文件和几个cpp、h文件。还有一个Makefile另外还有一个Makefile.target。有一个可执行的.so文件。 我的问题是:1.Makefile和Makefile.target有什么关系,哪个先产生。 &nb ...… 查看全部问答∨ |
最近接到一个项目,做一个手持设备,要用TFT液晶屏来显示。以前没有做过这种液晶的,想问一下,它的驱动和NT液晶的驱动方式一样么?用单片机是否可以实现? … 查看全部问答∨ |
求助 LPC2136控制rtl8019,用16位数据线,16位DMA怎么模拟啊?地址线是用5根GPIO接8019的SA0-SA4,地址00H-1FH,这样可以吗?… 查看全部问答∨ |