迪卡告诉你如何将24个IO塞到只有18个IO的N76E003上面
我们现在的需求是这个样子的
我们先把固定不能动的画上
单片机的RST复位脚只有在烧录bootloader时候才用的上,所以把F1C200S的复位脚和单片机的RST连到一起,
当烧录完N76E003后,单片机的RST脚只做IO就可以了。这样只负责控制主控是否复位。用于上位机控制复位F1C200S进入fel状态。
将检测电池电压的ADC先定下来, 毕竟支持ADC的脚不多,还有背光的PWM也先定下来,电容屏中断也找一个带中断的脚接上。
还有RY1303电源控制脚也得固定,不能复用,要不来回开关电源,可就真成了“开关电源了”
初始化LCD用的SPI接口的CS脚,去和ICP烧写单片机的DAT脚复用,
尽量保证复用的脚是屏幕部分的,因为烧写bootloader时候,可以不接屏幕
因为实在不够用了,CS脚在对屏幕失效的时候,SPI的MOSI和CLK是可以复用干别的事,当作输出用。
先把对SOC的中断和SPI的MOSI复用吧。
分配到现在还剩余2个IO
先看一下大概的功能,只看网络标号可能看不出来干啥用的。
最后分完了。
离线
写帖子时候,不能看到图片,不好说明,在此说明一下。
CH340->MCUTTL MCUTTL->CH340
是我标注串口的习惯,免得TX RX搞反了,我直接标注谁到谁。
这个串口的用途是,
1.更新MCU的固件
N76E003出厂不内置bootloader,所以需要先用ICP烧写一下。之后就可以用串口进行烧写了。
2.调试MCU程序使用,看串口信息来调试MCU程序(在PDA已经封装成整机的情况下)
3.PC上位机通过该串口,获得版本号或是状态,可以设置让soc复位,或者让soc复位到fel模式,只要MCU能控制采集的东西,都可以搞。
BAT_ADC
单片机的ADC脚去采集电池电压,当然是电阻分压出来的,不用太精确,别太没电了就行,有个采集,在界面上可以显示下电量。
LCD_CS LCD_SDA LCD_SCL LCD_RST
这4个脚是初始化LCD显示屏用的,LCD默认是MIPI模式,需要通过SPI接口去初始化变成RGB模式。我也不懂为啥屏厂对SPI脚的命名方式和I2C一样
ICP_DAT ICP_CLK ICP_RST
这3个脚是烧录单片机用的,ICP烧录接口,包括复位
在这里,LCD_CS和ICP_DAT复用了,但没有问题;在烧录bootloader的时候,屏幕排线是不插的。
SW A B
这3个脚是滚轮编码器的3个脚,我接了中断脚。这个滚轮编码器真是漂亮啊,但是也真贵 9块钱一个!
CTP_EINT
这个脚是电容屏触摸中断脚,我已经用单片机试过了,如果你用手摸电容板的话,这个脚会一直脉冲输出,哪怕我以最快的速度点一下屏幕,都好几十个中断。
长按一会就好多万。
我是通过单片机转一下这个中断,再到F1C200S。F1C200S的SOCEINT检测到中断后,先I2C读N76E003,到底是哪个脚发生了中断。
TWI0_SDA TWI0_SCK
这两个脚就是上面说的,F1C200S要I2C去读单片机,到底是什么中断发生了。还可以通过I2C去读电池电压等,去设置屏幕PWM背光,亮屏关屏等MCU可以干的事。
SOCEINT
F1C200S只剩下这一个中断脚了,所以我这相当于用N76E003做了一个中断控制器。emmmm....(N76E003AQ20:"你是想累死谁!!")
EMMC_EN
这个脚用来控制EMMC的使能,因为F1C200S复位后,如果识别到sdio里又固件,就直接运行了,我们的操作就是让F1C200S访问不到SDIO设备。这样F1C200S就能复位进入到fel模式了。
CTP_RST WIFI_INT
CTP_RST这个就是电容屏的复位脚了,其实不接也行,但有人说,有时候万一它不好用了,复位一下就好了。
WIFI_INT是ESP8266在下载固件时候需要用到的,其实不接也行的,软件驱动方面改一改,我就没有接,也没有改,就能跑起来,啊哈哈。
LCD_PWM
背光调节
CH_USB
看过上面功能图的应该知道,这个脚是用来控制USB的交叉开关的,
1.可以将GL852给F1C200S用,PC还能继续使用串口去看F1C200S的串口终端。
2.可以将GL825给PC用,这样所有USB设备都由PC控制,F1C200S是slave模式。当然,模式的切换我是考虑用一个隐形的IO,毕竟1片N76E003可以模拟很多个PCF8574
SOC_RESET
F1C200S的复位脚,在烧写时候,复位也无所谓,不用管SOC,之后MCU就控制F1C200S复位就好了(N76E003:"mmp,还让我当复位芯片")
RY1303_EN
这次更改,我的电源直接从BAT上取,控制1.2 2.5 3.3的电压输出和关闭,(MCU是独立供电,不受影响)
离线
最难搞定的就是IO的分配,每个小功能倒是能确定的了。
一个一个来。先从电容触摸屏开始。
##############
####电容触摸#####
##############
I2C接口是连接F1C200S和N76E003和AXP199还有这个电容触摸的,还有摄像头!!!。
供电取自N76E003的供电,因为主控有掉电状态,考虑可以双击触摸屏来启动相关操作。
N76E003的供电直接来自电池然后LDO3.3
CTP_EINT是触摸中断,当你的手点到屏幕时,会持续触发中断,你快速的点一下,就能达到几十甚至上百个中断。
我将中断连接到N76E003,而不是给F1C200S,因为F1C200S只有1个脚可以用来做中断了。
N76E003也起到中断控制器的作用......任务艰巨,不仅管按键,还管电源,还管中断。
CTP_RST是电容触摸的复位,这个无关紧要,但还是加上,所以给到了AXP199去控制。
最近编辑记录 迪卡 (2020-11-15 21:51:50)
离线
##############
#####显示屏#####
##############
显示屏部分呢,用的是一个MIPI+RGB的显示屏,按照配置接法是RGB模式。
供电来自AXP199的3.3V,和SOC的3.3V共用,
这个屏需要初始化,
涉及
LCD_CS
LCD_SCL
LCD_SDA
实际上呀,他是按照SPI走的,但屏厂为啥按照I2C的命名就不懂了。不管它,反正按照屏厂的初始化代码拉IO就行了。
LCD_RST是复位屏控制器的,这种无关紧要的我就给到AXP199去控制。
背光,一定要注意输出端用的电容耐压值,
这个升压能达到50V,!!!
电源来自AXP199的IPSOUT,背光控制由N76E003来控制,因为AXP199的PWM的高电平是2.5V.
离线
离线
##############
#####接口#####
##############
整个PDA,只有两个接口哈,
一个是type-C,
用来充电,
串口调试F1C200s
串口调试N76E003
给F1C200S烧录程序
给F1C200S的emmc烧录程序,更新固件。
USB连接F1C200S做数据传输。
一个是大口USB,
就是F1C200S的USB做host模式。
我这次不给F1C用hub了,这样就节省了4个交叉开关,而且USB可以接USB转以太网!!!!
电源输出部分做了控制电压输出。
最近编辑记录 迪卡 (2020-11-15 22:08:14)
离线