您尚未登录。

#2 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » FPC金手指厚度0.2mm,需要特殊的插座吗? » 2023-11-28 00:11:11

Quotation
回复: 0

一个器件的金手指厚度是0.2mm,插到普通的FPC插座里感觉有点松动。有没有适用于0.2mm厚度的插座?立创上没搜到。

#3 全志 SOC » F1C100s的HPVCC要怎么接? » 2023-11-24 23:59:48

Quotation
回复: 1

关于HPVCC的电压范围,datasheet上没写。
看到这个地方让我疑惑了,HPVCC不是用来给耳放供电的?

首先F1C600 user manual上,表格4.3.5写着HPVCC是“O”,输出引脚。
其次“F1C200s公版原理图”和“全志C100-MP5原理图”里,HPVCC是没接供电的,只接了10uF电容到地。
然后荔枝派是接到2.8V;彩虹派V3S是接到3.3V。

所以是我一直理解错了?是否应该按全志官方的接法?

#4 Re: 全志 SOC » 继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源 » 2022-12-16 16:56:06

CLKOUT输出的波形质量怎么样?以前用PWM输出给摄像头,波形惨不忍睹,勉强能用。

#5 全志 SOC » start.S是用什么方式开始执行0x80000000附近代码的? » 2022-11-05 12:41:20

Quotation
回复: 2

按照看到的资料,CPU上电,BROM拷贝Flash前面一小段到SRAM,从0开始执行。然后初始化DRAM,把真正的程序拷贝到内存0x80000000,执行。
但是不理解start.S里是用哪一句跳转到执行DRAM中的代码了?
看到start.S里有很多 bl sys_clock_init,bl memcpy,bl boot_main这样的调用。至少前面的应该是在SRAM里,后面boot_main是在DRAM里。不知我理解的对不对?

#6 Re: 司徒开源 » 开源精神值得敬佩,但是你司徒公开po 解FC3000的加密芯片就是可耻,做技术要有底线 » 2022-10-29 17:08:50

从法律上,破解行为(以及黑客行为)没有牟利不代表不违法,破解造成了他人的经济损失是判断标准。

#8 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 土家造-手搓sip芯片 » 2022-09-12 12:24:40

中间这些器件用锡焊确实有风险。封装起来之后,不知道用户会用多高的温度焊。长时间高温焊接,内部的锡融化流走的几率还比较大。

#9 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 土家造-手搓sip芯片 » 2022-09-12 11:10:41

很有意思的想法!Pad板的设计挺有意思啊,很有手搓风格,用简单的low方法模拟封装工艺。这样器件放两面可以缩小占地面积。

#10 Re: 全志 SOC » f1c100s/200s的串口波特率最大是多少? » 2022-06-28 09:50:33

上过2250000,能用。
periph时钟那里默认是25倍频(600MHz),改成27倍频(648MHz),就能准确分出2250000了。但手册上说不要改这个数,可能会影响其他。暂时没看到有什么影响。

#12 Re: 全志 SOC » F1C100s I2C偶然失效,可能是超频导致的吗? » 2022-04-02 22:19:45

出问题的时候,SDA/SCL都卡住不能改变。SCL高电平,SDA不一定高还是低。
把I2C外设断开也不能恢复,主机端卡住了。
用I2C的soft reset寄存器没用;重新assert/deassert I2C时钟、重新初始化I2C也没用。
只有把外设断开、再reset I2C才能恢复。但是两个外设放在一块板子上,目前还没确定是哪个外设的问题。

#13 Re: 全志 SOC » 今天发现新全志芯片XR32F429 » 2022-04-02 22:15:41

诶?debugdump.com不是本站旧域名吗?原来是卖给全志官方用了??

#14 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 嵌入式GUI的规范化 » 2022-03-22 11:34:58

GUI是个软件库/框架,没有什么商业上的必要性让大家统一起来。你说的这些需求是一个GUI框架自己就能做好的,比如Lvgl,提供了硬件层的抽象,也提供了theme、字体等的定制。移植到新硬件上确实不难,自己定制一套theme也不难。

#15 全志 SOC » F1C100s I2C偶然失效,可能是超频导致的吗? » 2022-03-22 11:27:09

Quotation
回复: 3

F1C100s的板子,I2C接了一个触摸芯片和一块OLED屏。开机不一定多长时间后偶然会出现I2C失效,可能几分钟后,也可能很长时间一直没事。失效的时候对触摸芯片的读和对OLED屏的写都会失败了。程序本身没有跑飞。
是超频到720MHz用的,core电压1.2V。
超频可能导致外设失效吗?

#18 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » 分享一个-手工贴片助手-C#开发 » 2021-12-13 08:50:33

赞!手焊时找元器件位号确实是一大痛点,不过现在阻容用立创贴就轻松很多了。

#19 全志 SOC » 被GCC编译参数坑 » 2021-09-14 00:44:57

Quotation
回复: 3

F1C100s,用微凉的裸机USB代码。做了不知道什么操作后,无法识别出USB设备了。
排查啊排查……比较前后的代码改动,没有什么地方能影响USB。
最后发现是GCC编译参数加了-Os导致的问题。具体是哪块代码的问题没有继续深究。
早就知道-Os会采用激进的优化,有可能产生不正确的代码。终于受到了伤害。

#20 Re: 全志 SOC » 正常运行状态下,有没有办法切换到FEL模式? » 2021-09-03 16:59:51

不行诶,早就试过reset SPI、还有恢复SPI相关的一些寄存器,没成功。

#21 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 内电层和多个过孔靠近放的疑问 » 2021-09-02 15:37:08

Quotation
回复: 1

如图,为了过大电流,并排放了4个过孔,过孔截面积相当于4倍了。但内电层几个花焊盘叠加在一起,铜皮连接到过孔的线宽只增加了1/4。
这种情况下一般会怎么放置过孔?

(论坛贴不了图了,提示“url 标签不允许在 img 标签内部使用”)

图片:
Screen%20Shot%202021-09-02%20at%2015.26.23.png
Screen%20Shot%202021-09-02%20at%2015.26.15.png

#22 Re: 全志 SOC » RGB888不使用8位时,低位数据线应该怎么接? » 2021-08-17 08:55:17

理论上说,把低位数据线接到高位,效果相当于增大了一点对比度,亮的更亮、暗的更暗。
接到GND相当于整体变暗一点。
其实应该都是几乎看不出来的。

#24 全志 SOC » 记一天愚蠢的调试 » 2021-06-25 18:32:54

Quotation
回复: 2

F1C100s上写数据到Nand Flash,LittleFS文件系统。保存的数据有很多bit错误。
调试发现和LittleFS层无关,不经过文件系统直接写Flash也会出错。
花了一天时间换不同的数据测试写Flash,情况非常奇怪,写入比较“规律”的数据则很少出错,写入比较“乱”的数据则很多错误。
是坏块的问题吗?不像,因为出错的数目远超过正常的坏块数。
而且写入不同的数据,出错的地方也不一样。每次都是一个bit错误,应当是1的bit变成了0。
…………
…………
在快要下班的时候,换块Flash试试。咦?Flash ID怎么不一样了?
换了Flash竟然完全正常了!!
原来是从代理商那拿了两种样品,两种的型号只差一点点,代理商说用起来是一样的。我照着一个规格书实现了驱动。
但其实两种型号,一个是内置4-bit ECC,一个是需要host自己做8-bit ECC。
我一开始焊的是不带ECC的那种,所以发生好多bit错误。换成内置ECC的就全好了!
…………
愚蠢的一天啊[哭][哭][哭]
以前没做过ECC相关的,不知道Nand Flash内部其实会有这么多错误,非常依赖ECC。

#25 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 这种纽扣接口有专业名称吗? » 2021-05-26 08:43:13

机械强度确实是个问题,SMT强度不太行,还是靠结构固定再焊根线比较好。

#26 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 这种纽扣接口有专业名称吗? » 2021-05-24 14:45:26

这不跟衣服上的子母扣一样。感觉直接买子母扣SMT焊上差不多,就是得手工摆,没法自动贴:D

#28 Re: 全志 SOC » f1c100s的spi0引脚是否可以换成PD那一组? » 2021-05-16 22:00:39

可以用一个IO口接MOS管控制TF卡供电,初始时不给TF卡上电。启动完后Flash就没用了,SPI0改用做SDC1应该没问题。
裸机开发可以做到,UBoot我不了解。

#29 Re: 全志 SOC » F1C100S的Keil裸机USB模拟U盘工程,USB2.0高速模式 » 2021-05-07 13:11:08

多谢分享,正需要U盘代码。不过分享的代码里带了一套GCC有点伤,哈哈

#30 Re: 全志 SOC » [问题已解决,34楼] 自制F1c100s板子,但是不工作,求社区大佬指导一下 » 2021-04-23 08:54:48

层叠功率电感没问题,我用风华的0805功率电感,2.2uH 950mA,妥妥的。

#32 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有啥低成本 + 简洁的 方法 检测LED灯是否亮了 蜂鸣器是否响了? » 2021-04-09 08:36:18

TB搜光敏电阻传感器模块、光敏电阻传感器模块,找那种带可调电阻、输出数字开关量的,可以设定高于某个亮度值/音量,输出电平改变。

#35 全志 SOC » F1C100s的PA2用作UART1_RX有坑吗? » 2021-03-25 09:13:31

Quotation
回复: 2

经试验,PD4/PD3直接连起来,UART1自发自收可以接收到。
PA3/PA2连起来,线上有信号,但UART1 RX没有收到数据。

而且把PA2当做IO口去读数据,能够读出高低电平变化,就是UART收不到。
这个引脚使用上有什么坑吗?

//补充:
用USB串口线实验了,PA2还是收不到UART数据,PD3可以。
加上拉电阻没用。

#36 Re: 全志 SOC » FC100S 最小系统供电问题的疑问。 » 2021-03-10 20:59:22

我DC-DC用的HX3406,1毛钱。LDO也用了2颗1毛钱的,没什么问题。

#37 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 长按若干秒强制重启的电路怎么做? » 2021-03-10 09:22:47

搜到了ST的Smart Reset IC系列专门干这个事情 https://www.st.com/en/reset-and-supervisor-ics/smart-reset-ics.html,型号为STM65xx/SR1/SR2。有长按1个键的,有同时长按2个键的。长按延时几秒到十几秒后触发reset。
本来以为用几个分立器件能搭起来,但似乎没那么简单。又要长按开机,又要能长按更长时间reset,不太好做。

4楼说的watchdog电路也是要软件里喂狗的,软件如果有bug,比如在死循环里喂狗,那外部watchdog也没办法。
5楼的cat809是电压检测,供电电压低于多少一小段时间再恢复,则触发reset。

#38 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 长按若干秒强制重启的电路怎么做? » 2021-03-09 16:09:47

Quotation
回复: 17

手机或某些电子产品上,常有 长按电源键若干秒强制重启的功能。这种强制重启在系统完全卡死时也管用,所以猜测是硬件实现的。
比如Kindle死机时,按住电源十几秒后,黄灯闪烁并重启。
一般是如何实现呢?有没有低成本的做法?

#39 Re: 全志 SOC » F1c100S 的性能到底如何?怎么看天梯图ARM9只相当于M0的性能 » 2021-03-03 11:33:53

aozima 说:

尽量定点化,实在要用浮点,可以看看 Qfplib 这个库。

这个库看benchmark很厉害啊,但是全是针对M0/M3的汇编,编译不过。

#40 Re: 全志 SOC » F1c100S 的性能到底如何?怎么看天梯图ARM9只相当于M0的性能 » 2021-03-03 09:18:48

没有FPU,浮点是比较慢。如果算法能改成定点数那是不错的,主频设到640MHz能稳定运行。

#41 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问这个图片用什么软件画的? » 2021-01-27 23:18:06

流程图嘛,画图软件基本都能画。推荐draw.io,开源的。除了里面那根很随意的曲线,都能画。

#42 Re: 全志 SOC » F1C100s涨价又缺货,有什么推荐的替代? » 2021-01-26 12:58:07

v_8787 说:

现在是什么价格了啊?

快到20了。

#43 Re: 全志 SOC » 跟贴从零构建f1c200s硬件开发板 » 2021-01-26 12:57:10

fastspeet 说:

搞硬件的,要做不应该自己买点芯片打板练习么

这是全新的还是拆机?便宜哇,可否发一下供应商联系方式?

#44 全志 SOC » F1C100s涨价又缺货,有什么推荐的替代? » 2021-01-25 14:37:10

Quotation
回复: 32

F1C100s缺货缺的厉害,价格快涨了一倍了。
好苦逼,手头几个产品全是用的这个,实在是好用。这么便宜又好用的芯片要没了,有什么接近的替代?

#45 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问这新出的树莓派单片机版本usb线怎么那么粗? » 2021-01-22 13:36:10

smartcar 说:

双层板控制阻抗,加粗线增大阻抗,或者缩小线间距控制阻抗,树莓派选择了加粗线。

我也注意到了,原来是这个原因。平时自己布个双层板的USB都很随意,不考虑阻抗,也能用。

#47 Re: 全志 SOC » 新作F1C200S,打算百分之百开源,给大家的新年礼物。 » 2021-01-13 23:19:42

bubailong 说:

我这个是调了主频和DDR速度的,如果用默认的,也是没法看的。

DDR参数是如何调整的?

#48 Re: 全志 SOC » 探讨一下全志芯片的音频接口硬件电路连接应该怎么使用最好 » 2021-01-04 09:07:45

david 说:

f1c耳机输出功率多大 能带个小扬声器做音效么?目前我加了个功放 还没调到那里  DAC接的是HPR

依稀记得在哪个地方看到150mW,找不到了。应该只能带动头戴式耳机里那种扬声器,音量很小。

#49 Re: 全志 SOC » 探讨一下全志芯片的音频接口硬件电路连接应该怎么使用最好 » 2021-01-04 09:04:12

微凉VeiLiang 说:
david 说:

另外 你这是上电就璞声还是软件初始化的时候才璞声?如果是软件初始化有璞声,看下200s 1.2版手册第157页的图,有些mixer开关可能要先设置下好平衡直流电压。

初始化后有pop声。感谢提供信息,我去调下看看

音频部分的寄存器里搜“pop”,有和anti-pop有关的,不知道是不是管这个的。

#51 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 三极管集电极开路接负载,有什么好的办法检测负载是否开路? » 2020-10-16 23:58:35

按测电流的方式,给负载串一个很小阻值的电阻,小电阻两端的电压加运放放大后,接AD测量。或者放大到足够大直接用IO口判断电平。

#52 Re: 全志 SOC » F1C100s上电后怎么判断有没有SD卡? » 2020-10-16 09:12:29

根据FLASH_MOSI上的信号来看,当PF1(SDC0_D0)接地时,上电后要1.x秒BROM才开始读SPI Flash。
当PF1接VCC或悬空时并没有问题,上电瞬间开始读Flash。

根据SD卡协议的资料 “……只要卡还在忙,DAT0线就会拉低,并且处于正在编程状态(Programming State)。”
所以推测是BROM根据SDC0_D0低电平判断SD卡正在忙,触发等待/重试,重试1s后放弃SD卡启动,才开始读Flash。

#53 全志 SOC » F1C100s上电后怎么判断有没有SD卡? » 2020-10-10 16:05:20

Quotation
回复: 3

我的板子上不用SD卡,从Flash启动。如果把SDC0相关的某些引脚(PF0-PF5)接上别的做IO口用,系统启动就要多花一两秒。如果完全不接这几个IO口,启动就很快。应该是F1C100s认为接了SD卡,先从SD启动,发现读不出数据再从Flash启动导致变慢。
所以我想问,SDC0的几个IO口要怎么接,才会不被当做接了SD卡?

#54 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 裸机开发必须要自己实现libc和libm吗? » 2020-09-23 22:58:21

不用,可以用gcc的 -lm -lgcc -lc。
不过有可能还是得自己实现少量函数 _sbrk,_exit等。

#55 Re: 全志 SOC » F1C200s 驱动 SPI+RGB 屏的接线问题 » 2020-09-22 12:47:31

三木同子 说:

另外还想请教你一个问题,DB0-DB17怎么知道哪个是分别对应R,G,B?

本站不知道哪个帖子(找不到了)里有份全志A10 LCD的文档,有列出来。

#57 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怎么实现一个蓝牙HID主机端? » 2020-09-17 17:16:03

liuyuedong 说:

我是参照这个例程写的程序,实际测试的时候,设置长度小于等于64的时候都是正常的,当发送数据长度大于64的时候,只能发送64个字节

SPI_CTL_REG 的 TP_EN,设为0试试。因为SPI是一边发送一边接收的,当RX FIFO满了,会停掉发送数据。所以在DMA的时候可以把这个bit设为0。

#58 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怎么实现一个蓝牙HID主机端? » 2020-09-17 09:28:05

liuyuedong 说:

问一下f1c100s的SPI DMA的问题啊,spi的DMA发送是不是每次只能发送64个字节??

没有限制,反正是自动的,由SPI FIFO来控制进度。SPI控制器自动一个一个地把FIFO的数据发送出去。FIFO设置trigger level,当FIFO里的数据长度大于或小于这个数时,就发送DRQ,DMA会自动拷贝新数据过来。

#59 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怎么实现一个蓝牙HID主机端? » 2020-09-16 13:43:57

Quotation
回复: 7

我想实现一个蓝牙HID的主机端,也就是允许蓝牙键盘连接到我的设备,输入文字。有没有现成的模块方便实现这个功能?
我知道蓝牙HID的设备端有很多现成的模块,简单接在MCU上就可以模拟蓝牙键盘鼠标。但没有找到主机端的模块。

#60 Re: 全志 SOC » F1C200s 驱动 SPI+RGB 屏的接线问题 » 2020-09-10 08:26:02

CS要换一个引脚。理论上只要不片选,SCL和SDA就没影响。

#61 Re: BLDC电机驱动 » 有刷电机可以反转控制减速or停止吗 » 2020-08-21 16:52:18

把电机两根线接到一个大功率小阻值的电阻上,就会迅速消耗能量刹车。
H桥驱动芯片一般有个刹车模式,相当于短接两根线,也会在芯片内部耗掉能量造成刹车。

#64 Re: 全志 SOC » 荔枝派声音问题 » 2020-08-04 13:02:48

Nano带耳放,驱动耳机可以,驱动喇叭应该声音很小。要加功放。

#65 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 请问锂电转 3V3用什么方案比较好? » 2020-08-02 17:25:18

要看电流多大?电流很小用LDO,省事。电流大用DC-DC,根据电流需求再选型。

#66 Re: 全志 SOC » 请教SPI Flash的量产烧录方法 » 2020-07-31 13:52:19

ifree64 说:

请教各位达人,SPI Flash用来存放系统,量产时用什么方案烧录更好呢?
SUNXI-FEL烧录32M,要烧录10多分钟。

哪有这么慢?32Mbit还是byte的flash?

#67 Re: 全志 SOC » 全志 V3S 硬件设计指南[PDF] » 2020-07-17 09:26:54

HY 说:

我的硬件设计,只有速度比较低的时候才可以运行,高了就不行了,怎么回事

速度比较低是指CPU频率还是SPI等的速度?前者可能是供电问题,后者是layout问题。

#68 Re: 全志 SOC » F1C100S GPIO中断延迟比较大 » 2020-07-17 09:25:27

陈卫国 说:

使用Nano的板子测试,发现IO口中断延迟达到60us左右。
测试方法如下:将两个IO口短接,使用定时器产生一定周期的脉冲信号到其中一个IO口,另外一个IO口设置成下降沿中断模式,收到中断将第三个IO口电平翻转,发现第三个IO口的电平翻转比第一个IO口的翻转延迟了差不多60us样子,有人遇到过这个问题吗?

什么系统?裸机直接访问寄存器翻转IO口大约在0.3us。系统对中断的处理、IO口操作都有可能引入延迟。

#69 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 锂电池 电源芯片,你们有没有好用不贵的? » 2020-07-16 09:30:29

Tony 说:

sw6124,充放电管理,路径管理,还有快充协议,电路也不复杂, 功率也够18W。我玩过。

看了一下,这个是给充电宝用的啊,提供的完全是充电宝所需的功能。虽然可能不符合楼主需求,不过学习了。

#70 Re: 全志 SOC » [V3S]发一份V3S的裸机程序 » 2020-07-14 15:58:25

flex-A 说:

另外还想请教各位大佬一个问题:在sys-dram.c中声明了一个结构体变量,在声明的同时赋值,但是这样cpu就不知道跑哪去了,改成下面这样就好了
https://whycan.cn/files/members/1924/03.png
但page_size放外面赋值总觉得有点刺挠:),想问问各位大佬有啥解决办法吗。

把几个变量赋值顺序调成和结构体声明里的一样试试?

#71 Re: Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » Python 发布应用程序, 将脚本转化为可执行程序 » 2020-07-05 01:34:29

ma6254 说:

我写的上位机,也用了这个打包器,图形库是ptqt5,其中有部分交互是用H5做的用到了webengineview
最后打包出来的整个文件有200多M,看了下py5core有20M,webengine有90M,不知道该怎么缩小体积

这大概只能换UI库了,没有复杂UI的话用Python自带的Tkinter就很小。

#72 Re: 全志 SOC » 有需要audio技术支持的吗? » 2020-06-29 11:57:55

akinggw 说:

有没有f1c100s的音频裸机驱动啊?淘宝有个卖的,有点贵呀

可参考xboot的audio改改,加上DMA就比较实用了。主线程解码音频,DMA往DAC传输数据,不难。

#73 Re: 全志 SOC » 能裸机调用GPU吗? » 2020-06-24 14:34:03

Blueskull 说:

几乎不可能。shader要编译的,编译器一般是jit的,驱动里面实现的。一般gpu的驱动超级复杂,是一个完整的编译器+优化器,而且还得负责分配gpu资源。

多谢!

#74 全志 SOC » 能裸机调用GPU吗? » 2020-06-24 12:00:13

Quotation
回复: 11

带GPU的SoC,我希望用GPU的shader加速运算,但并不用真正的3D功能。
如果为这个需求就装Linux和OpenGL太重了,有没有可能裸机调用到GPU的部分功能?
系统和GPU通信也是通过寄存器吗?是否能选择性地只使用小部分功能,还是必须开发一套复杂的driver才能用起来?

#75 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有用过3轴磁传感器吗? » 2020-06-23 16:30:19

用280°热风枪又焊了一片,发现一个重要线索:板子单独测试,3个轴数据是好的。装到产品里去,y轴数据范围又变了。
所以这只是典型的磁传感器的hard iron干扰。y轴正对着喇叭,只是我没想到10cm外的小喇叭有这么大干扰。
收集各个方向旋转的数据,对中点偏移做校准后,数据看起来正常多了。

#76 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有用过3轴磁传感器吗? » 2020-06-23 12:13:04

Quotation
回复: 2

有没有遇到过1个轴数据不对的情况?
焊了2片,都有一个轴的数据范围是不对的,比其他两个轴范围小很多,数据也很不稳定。
怀疑是焊接烫坏的。WLCSP封装,只能用热风枪吹。焊接有什么注意事项吗?

#77 Re: 全志 SOC » F1C100s看门狗失效bug » 2020-06-16 10:06:54

myxiaonia 说:

0xdba00000 ~ 0xffff4040,将这个虚地址段用mmu映射到sdram区,这个总可以完成的吧!这样cpu不会司机了,因为实地址是真实可用地址啊

多谢,简单测试了一下,这个方法是可以解决问题的。现在我是把从0xd0000000到0xffffffff的地址映射到0x90000000。
只测试了一些地址,也不敢保证所有的地址都没问题。毕竟不知道该bug产生的原理。不过确实是暂时解决了。

#78 全志 SOC » F1C100s能用并行Flash吗? » 2020-06-10 16:27:40

Quotation
回复: 2

像这种并行Flash,能支持吗?或者说这种Flash有没有只需要很少引脚的接法,就像SD卡也可以用SPI访问一样。
Screen%20Shot%202020-06-10%20at%2016_25_20.png

#79 Re: 全志 SOC » 迪卡电子的F1C200S PDA正在焊接 » 2020-06-05 23:41:07

本来想说板子好大,然后发现是电脑好小。这是什么电脑?

#80 Re: ST/STM8/STM8S/STM8L » STM8L152C8这个芯片的ADC1,现在遇到的问题是第一次读取的AD转换值是不对的,希望有前辈可以指导一下 » 2020-05-27 13:03:51

找找官方文档,STM8不知道,STM32的ADC上电后要等待校准

       //Enable ADC reset calibration register
        ADC_ResetCalibration(adc);
        //Check the end of ADC reset calibration register
        while (ADC_GetResetCalibrationStatus(adc)) {}
        //Start ADC calibration
        ADC_StartCalibration(adc);
        //Check the end of ADC calibration
        while (ADC_GetCalibrationStatus(adc)) {}

#82 Re: 全志 SOC » F1C100s看门狗失效bug » 2020-05-24 21:42:53

staunchheart 说:

这两天临时出去有事了,所以没能按时试。
经测试RTT用GCC编译,没有这样的问题。WDT正确的工作了。

    rt_kprintf("start wdg test----------------------------------\n");
    struct  A* a = (struct A*)malloc(sizeof(struct A));
    // ...
    free(a);
    // a被释放,指向的地址重新分配后写入了其他内容
    // ...
    a->func();  // 野指针使用,危险!
    rt_kprintf("end wdg test----------------------------------\n");

我那个只是示意代码。是要向那块被释放的地址里写入合适的数据,使a->func的值为0xdba00000 ~ 0xffff4040。

#83 Re: 全志 SOC » F1C100S裸机 Timer USB HOST » 2020-05-23 11:14:39

XBoot里的timer可以用,在src/include/time/timer.h。使用方法参考src/driver/clocksource/clocksource.c。

#84 Re: 全志 SOC » F1C100s看门狗失效bug » 2020-05-22 10:21:12

继续研究。C++对象内存布局虽然没有固定标准,是编译器实现的,但基本是按照《深度探索C++对象模型》的样子。
一个带有虚函数的类的指针,指向的内存区域最开头应该是类的虚函数表指针。该指针指向一个数组,数组成员是函数指针。

在上面的例子中,当调用p->g();时,由于p指向的内存区域全是0,所以被当做是地址0x0处开始为虚函数表。
g()是类的第二个虚函数,所以把地址0x4当做函数指针。
打印出地址0x0附近的内存看:

0: 0xea00000d
1: 0xe59ff014
2: 0xe59ff014
3: 0xe59ff014
4: 0xe59ff014
5: 0xe59ff014
6: 0xe59ff014
7: 0xe59ff014
8: 0x80000260

看到0x4地址处的内容是0xe59ff014,接下来会把0xe59ff014当做函数地址去调用。就是经过这个非法函数调用后,看门狗失效并且死机!
复现此bug的代码可以再精简为:

    typedef void (*FuncPtr)();
    FuncPtr f = (FuncPtr)0xe59ff014;
    f();  // 触发看门狗bug

继续做实验发现,并不是只有这一个特殊的地址调用会触发bug,实际上有很大范围的地址都能引起看门狗无效。
从 0xdba00000 ~ 0xffff4040,这个区域内的地址,如果赋值给函数指针来调用,都会引发看门狗失效bug!!小于0xdba00000或大于0xffff4040的地址调用,则能正常死机并触发看门狗。(具体地址会变化,还跟CPU频率有关,不是完全精确的范围。)
这个范围是很大的,也就是说如果程序写错了,还是会有挺大的可能性遇到此bug。

比如考虑下面这个常见的野指针访问代码,触发看门狗bug的概率并不小。

struct A
{
    int data;
    void (*func)();
};

A* a = (A*)malloc(sizeof(A));
// ...
free(a);
// a被释放,指向的地址重新分配后写入了其他内容
// ...
a->func();  // 野指针使用,危险!

#85 全志 SOC » F1C100s看门狗失效bug » 2020-05-21 22:30:29

Quotation
回复: 14

刚调了好几个小时的灵异bug,现象是启动后有时候会死机。这时候已经启动了看门狗,但狗没有起作用,系统一直卡在那不reset。
最后调出来是个空指针错误。空指针毕竟是编程比较常见的错误,空指针能导致看门狗无效,F1C100s的这个bug也是有点严重。

一番精简之后,找到了最小复现代码:
只要用一个基类指针,指向一块内容为0的区域,调用基类的第二个虚函数,就很容易使看门狗失效并死机。

这个bug可能跟编译器的具体实现(C++类对象内存布局)有关,我用的GCC,其他编译器不一定是这样。

class Base
{
public:
    virtual void f() = 0;
    virtual void g() = 0;
};


// main():
    // 设置看门狗,5s的时长

    uint8_t empty[1024];
    memset(empty, 0, sizeof(empty));
    Base* p = (Base*)∅  // 野指针,指向了一块内容全为0的内存

    feedWatchdog();  // 喂狗
    mdelay(10);  // 等待超过1500ms则不出bug,等待0ms也不出bug,这之间都会遇到bug

    p->g();  // 调用基类的第二个虚函数(第一个没问题),从这里就死机了。看门狗无效。

#86 Re: 全志 SOC » F1C100S程序烧写问题 » 2020-05-20 17:09:20

ly123 说:

也就是说要更新程序必须用到【RESET】 +【FLASH-CS】了?有没有其它方法使升级程序时不必用到这两个按键?比如通过修改boot之类的?

自己在程序里写代码更新Flash就可以。比如接收从串口或USB来的指令,收到特定的指令则把后面的内容写入Flash。
这种方法不是用sunxi-fel等现成的工具,相当于自定义了一个刷机的通讯协议。

#87 Re: Cortex M0/M3/M4/M7 » STM32F103C8T6 跑了几个星期后突然死机,有什么好的调试方法吗? » 2020-05-17 16:11:25

如果是3.5个星期,可能是哪里的int32毫秒溢出了,7个星期则为uint32毫秒溢出。

#90 Re: 全志 SOC » 各位大佬,f1c100s和ea3036手工焊接有什么方法技巧吗? » 2020-05-12 11:06:21

底部中心有大焊盘的比较不好焊,要吹得时间长些。
周围一圈引脚,我经常是先上上锡,再用热风枪吹,和焊盘的锡就容易结合得好了。

#91 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 自从开始用JLC SMT,多了个习惯 » 2020-05-09 21:10:22

现在还是只能打样,最多50片。限制还蛮多的,只能贴单面。也就产品研发阶段用用,省自己焊的时间。

#93 Re: 全志 SOC » 自制F1C100S核心板 (开源PCB) » 2020-05-05 00:30:44

DC-DC的外围器件不要追求那么整齐,按datasheet上的layout guideline的思路摆。

#94 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 强磁场对信号有没有干扰? » 2020-04-30 08:55:02

xxzouzhichao 说:

磁通的微分就是电压,你说会不会有干扰?

所以,变化的磁场会影响电,不变的磁场没事?

#95 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 强磁场对信号有没有干扰? » 2020-04-29 23:36:13

Quotation
回复: 9

产品里有一处需要用到磁铁。磁铁旁边几mm处是显示屏的FPC排线,上面走几十MHz的SPI信号。
请问磁铁会不会干扰SPI信号?
如果有,有什么屏蔽的方法?
一般的铜箔胶带是不是只能屏蔽电磁,对纯磁场无效?

#96 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 不论什么烙铁头只要碰一下塑料就挂了,哪怕是买立创的维修佬13元一个都这样, 真是*了狗 » 2020-04-28 14:25:50

你们都不用高温海绵吗?我跟贴片厂老师傅学的手法:每次焊完东西,烙铁要放回架子上之前,在湿海绵上蹭几下,把烙铁沾锡的面都蹭净;上满锡(关键步骤),再放回架子上。不忙关电源,多放一会。很久不用了再关电。

#97 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 不论什么烙铁头只要碰一下塑料就挂了,哪怕是买立创的维修佬13元一个都这样, 真是*了狗 » 2020-04-27 22:16:16

raspberryman 说:

碰到塑料挂烙铁头是什么化学原理?

具体不知道。烙铁头表面有用的关键是一层电镀,塑料加热碳化可能把电镀层破坏了,就不沾锡了。

#99 Re: 全志 SOC » 商业使用F1C003芯片大概需要多少钱? » 2020-04-27 16:23:38

迪卡 说:

全新9元
拆机5块钱一片(良率50%以下)

我们买的就算不含税也没这么便宜啊?来,把这个代理商的联系方式甩我脸上。

#100 Re: 全志 SOC » 调通F1C100s的SPI DMA » 2020-04-26 17:29:19

ntmusic 说:

水一贴,DMA结合操作系统才能比较好发挥优势,在等待DMA传输结束时CPU可以很方便的切换出去做别的事情,而裸机则一般要通过设置状态结合中断来使用,程序结构也会变得奇奇怪怪,若使用查询等待的话可能还不如直接使用CPU操作来的快,因为CPU一般拥有总线最高优先权

确实,有OS抽象出线程或task的概念会方便使用。不过如果代码写得巧,裸奔也清爽的:D。
比如把中断封装成回调,用C++的lambda写回调实在很方便。

#101 Re: 全志 SOC » 调通F1C100s的SPI DMA » 2020-04-26 17:24:38

泡在妞里的Feel 说:

求赐教,这两个寄存器是什么功能?
https://whycan.cn/files/members/1964/test.png

Wait State意思不知道。

Burst Length大约是每次传输数据,在总线上连续传几个“Data Width”那么大的数据。
对于从内存到内存,Burst Length设为4直接就可以用。
对于从内存到外设或外设到内存的DMA,如果Burst Length设为4,外设的FIFO一般有trigger level也要对应改。比如trigger level默认为1,表示FIFO里只要有1个数据就发送DRQ,让DMA来拷走。当Burst Length为4,trigger level也要>=4。
反过来,如果是从内存到外设拷数据的,FIFO的trigger level需要 <= (FIFO总长度 - 4)。

#102 Re: 全志 SOC » 调通F1C100s的SPI DMA » 2020-04-26 17:16:52

泡在妞里的Feel 说:

666,DMA部分的代码可否分享一下。

现在还有点玄学问题没有解决,以后解决了再分享……
代码里有时候多一行少一行无关代码,显示屏就花屏了。可能是时序的问题,也可能是字节对齐的问题,还没弄明白。

另外,我是很想分享代码,但是代码混在项目里,要分享出来还得抠,抠出来又不能直接跑。
要是全志有一套像STM32那样的标准库,分享资料会更方便。

#103 Re: 全志 SOC » 调通F1C100s的SPI DMA » 2020-04-26 17:09:13

Quotation 说:

另外,发现DDMA拷贝较大的数据会出错,比如拷贝1MB数据,第一次成功,第二次就从1020KB开始数据不正确了。可能是缓存的原因,待研究。

这个问题是简单的cache问题,从另一个帖子里@armstrong 的回复明白了。正确invalidate和clean缓存后就没有传输错误了。DDMA一次可以传16M,NDMA一次可以256KB(文档上说是128KB)。

#104 Re: 全志 SOC » 关于F1C100s的DMA使用 » 2020-04-25 13:30:16

armstrong 说:

cpu把数据写到内存,然后交给外设或dma,要用clean;
cpu读取由外设或dma放在ram的数据之前,要invalid;
dcacheinvalid和dcacheclean指令,要么是针对mva的,要么是针对cache-line的,要么就整个dcache
所以MMU_InvalidateDCacheArray函数封装了mva的遍历。
对ram变量也有cache-line对齐的要求,即变量或数组的大小和地址必须32字节对齐,否则会破坏变量。

看了这几个cache相关函数的实现,有个疑问。函数里需要遍历整块内存,以32字节为单位去调用 MCR p15……。这样岂不是很低效?
如果我有几百K的数据从外设读回来,实际上CPU cache只有一点点,并不需要遍历几百K去invalidate cache。
那怎样能够仅仅invalidate需要的cache呢?当然可以invalidate整个cache,还有没有更精简的方法呢?

void MMU_InvalidateDCacheArray(unsigned long mva, unsigned long num)
{
  signed long size = num;
  while (size > 0) {
    MMU_InvalidateDCacheMVA(mva);
    mva += CACHE_ALIGN;
    size -= CACHE_ALIGN;
  }
}

#106 全志 SOC » 调通F1C100s的SPI DMA » 2020-04-25 00:28:20

Quotation
回复: 25

1. 初步调通SPI DMA,成果喜人。
SPI Tx和Rx都用上DMA,接示波器看CLK信号。当通过寄存器设置SPI速率设为100MHz的时候,CLK信号实际能跑到96MHz。SPI速率设为50MHz的时候,实际CLK为49.xMHz。
(用XBoot不管怎么设速率,实际的只能到25MHz。一方面是没用DMA,一方面是XBoot的代码不够优化。)

2. 实验用DMA加持的SPI驱动ST7789串口屏。240x240分辨率、RGB565,SPI跑满50MHz,屏幕帧率可以到54。非常满意了。
实验时是用杜邦线接的屏,也许走线好一点的话还能支持更高速率。我现在是只能跑到50MHz了,多1M显示就开始乱了。

3. 实验DMA做内存拷贝,结果如下。DMA拷贝内存,速度并没比memcpy快多少。
有几个参数能影响DMA拷贝速度:1) DMA的种类,用NDMA还是DDMA;2) data width 3) burst length。
而memcpy速度受CPU主频影响(一点点)。

拷贝128KB数据比较:
memcpy 2.4ms(640MHz主频)
DDMA 1.9ms(data width = 32-bit,burst length = 4)
NDMA 2.6ms(data width = 32-bit,burst length = 4)
DDMA拷贝内存最快能到memcpy的1.25倍。

另外,发现DDMA拷贝较大的数据会出错,比如拷贝1MB数据,第一次成功,第二次就从1020KB开始数据不正确了。可能是缓存的原因,待研究。

#107 Re: 全志 SOC » 分享自制的使用USB网卡的F1C200S开发板 » 2020-04-20 23:04:45

wwng 说:

我是3.3v是DC-DC,2.5和1.2v是LDO。用示波器测量发现LDO输出会比DC-DC慢。可能我的LDO型号有问题?

我LDO是6219,EN脚直接接3.3V,VIN放了1uF的电容。可能跟LDO型号有关。

#108 Re: 全志 SOC » 谁有V3S或者F1C100s的DMA例程? » 2020-04-20 22:56:12

@达克罗德 楼主,有没有调通SPI的DMA?(顺便问晕哥,回复帖子能不能强提醒某人?)

#109 Re: 全志 SOC » 分享自制的使用USB网卡的F1C200S开发板 » 2020-04-20 22:52:40

“3.3v给3路LDO供电,但是这样会导致电源的时序不对”,还有这样的事?我一直是DC-DC输出3.3V,给两个LDO和另一个DC-DC供电,从来没出过问题。
2.8V和2.5V是LDO,1.1V是DC-DC。

#110 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » PCB台历 » 2020-04-18 23:53:29

白框一个月才动一次,就不用弄这么复杂了吧。顶多装几个红外收发测距,检测到框框现在的位置,每月1号检查一下,位置不对就在墨水屏上提示用户手动调整位置。
或者更简单一点,框框下边贴一条磁性胶带,用几个霍尔开关识别位置。

#111 Re: 全志 SOC » 谁有V3S或者F1C100s的DMA例程? » 2020-04-17 17:27:47

达克罗德 说:

当前xboot似乎没有DMA的驱动,我想看看能否把SPI的读写以及memcpy用DMA来加速

楼主有没有调出来SPI的DMA?
发现用XBoot的DMA约有40%的时间在空闲,想用DMA加速。XBoot里设置成50M SPI,波形看CLK确实是50M,但算上空闲的部分就只有29.xMHz了。

#112 Re: 全志 SOC » 开源自己画的一个F1C100S板子和原理图,摄像头和屏幕同时引出,所有io引出 » 2020-04-16 09:35:50

kerr 说:

大神, 请教下, 您的原理图中JP3是什么?
CSI接口 需要两个ME6206?  我看两个VCC2.8都用到

JP3是切换摄像头DVDD的供电,不同摄像头要求的不同。有的用2.8V,就去掉U7,接上JP3。有的不是2.8V的摄像头,则自己换成合适的LDO到U7,打开JP3。

#113 Re: 全志 SOC » 求大佬帮我看一下自制F1C200S小板子 » 2020-04-15 10:25:12

看不出明显的错误,建议打样做下去吧,有了问题在调试中学习。也不能什么都指着网友帮忙检查嘛是不是。

#115 Re: 君正Ingenic/X1000/X2000/T10/T20/T30 » 求便宜好用的电平转换芯片 » 2020-04-14 14:36:54

74ALVC164245,1.x元。
没用过,只是现搜的。去立创商城,搜电平转换,按引脚数过滤,48pin的一般是16通道。

#116 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 自从开始用JLC SMT,多了个习惯 » 2020-04-13 16:23:45

Quotation
回复: 15

JLC SMT只能贴单面,所以现在画板,习惯把阻容尽量放在一面,全让JLC贴。省不少事。
尽管有时阻容放一面不方便布线,也要勉强这样做,否则好像错过了羊毛。哈哈。

#118 Re: 全志 SOC » F1C100S U盘速度 » 2020-04-01 09:42:36

按理说应该不难,参考STM32的USB Host库应该比较容易实现。

#119 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 这个规格的FPC金手指用什么插座? » 2020-04-01 09:32:16

非常感谢!这个可以的。
太少见了。而且偶数p的座子还区分上接和下接,上/下接对应的FPC不能通用。

#120 Re: 全志 SOC » EA3036芯片老烧大家帮我分析下。。 » 2020-03-31 10:50:28

杨飞武 说:

是这个问题。跳了一个大坑。

DC-DC的输入电容会影响这么大?5V是用什么供的?

#121 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 这个规格的FPC金手指用什么插座? » 2020-03-31 10:47:42

wujique 说:

就是FPC座子,0.3 间距基本都这样,前插后翻

死活搜不到合适的,找到的0.3mm的一般至少13p往上,而且都是奇数的。这个8p的太奇葩了点。

#122 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 这个规格的FPC金手指用什么插座? » 2020-03-30 16:59:18

Quotation
回复: 4

这个气压传感器的金手指是这种样子的,看pitch大约是0.3mm,而且临近的两pin是一前一后的。
想问下这个该用什么插座?

Screen%20Shot%202020-03-30%20at%2016_54_36.png

#123 Re: 全志 SOC » 全志F1C200S原理图+PCB(公版) » 2020-03-27 13:36:51

Gentlepig 说:

板子挺大,还是四层板。
不明白串口那里是用了个Mos管来控制接收,是为了匹配电压?

感觉是Push pull转成Open drain,防止外部拉/灌电流。

#124 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 点菜宝上面,这个固定FPC接插件的东东叫啥? » 2020-03-27 13:10:01

带背胶的泡棉垫片吧,粘在接插件翻盖上,泡棉上面应该顶住外壳,压住翻盖。

#125 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » Q群看到的一个创意 DIY » 2020-03-26 09:38:49

v_8787 说:

灯条没看到几根线,驱动这么多等是怎么实现的?

用的像WS2812这种带IC的灯,串行信号控制。

#127 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问立创商城 LC凭什么卖这么贵? » 2020-03-21 13:35:44

smartcar 说:

https://s.taobao.com/search?q=HY951180A

https://item.szlcsc.com/35646.html


都是 HY951180A, 淘宝卖4块, LC卖13.5块?

其实LC上要看批量价格8.58多含税,淘宝是仿品+不含税,差的就没那么大了。

#130 Re: Cortex M0/M3/M4/M7 » STM32F4库函数中几种FFT实现方式对比 » 2020-03-17 10:27:23

JenniferL 说:

感谢关注与回复,所以说可以只用一半的数据么。

如果输入是实数(比如声音),那是只用一半的输出就可以。

#131 Re: 全志 SOC » 网上看到的F1C200s最新资料,包括Datasheet(V1.1)和User Manual(V1.2) » 2020-03-15 01:33:53

metro 说:

我也对这点感到好奇,毕竟打开某宝也找不到这个价格的F1C200s。
顺带一提,我翻了一下博客,发现博主就是之前搞信用卡上跑Linux的老哥:My Business Card Runs Linux。在这个帖子里面写了F1C100s是$1.42。

原来是这位。帖子里说,是全志主动联系他,白给了些F1C200s样品。

#132 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2020-03-15 01:31:09

1017078605@qq.com 说:

root@yu-virtual-machine:/home/yu/lichee/lvgl_f1c100s# make
arm-eabi-objcopy -v -O binary build/firmware.elf build/firmware.bin
copy from `build/firmware.elf' [elf32-littlearm] to `build/firmware.bin' [binary]
Make header information for brom booting
tools/mksunxi/mksunxi: 1: tools/mksunxi/mksunxi: Syntax error: ")" unexpected
Makefile:140: recipe for target 'build/firmware.bin' failed
make: *** [build/firmware.bin] Error 2

各位大佬, 我用这个编译gcc-linaro-5.3.1-2016.05-i686_arm-eabi.tar
出现了以上的错误,请教下是什么问题?

makefile贴一下,多写了个括号吧?

#134 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 求一款16路以上的触摸按键芯片推荐 » 2020-03-12 16:57:35

MPR121,12路,I2C地址有4种。所以用一个I2C口接4片共48路。
还有TS20,20路。I2C地址有2种,所以最多40路。

#136 Re: 8051/STC8/AT89C51/N76E003 » 请问大家N76E003单片机一个串口要接 10个 SIM800C模块读写短信, 用什么方案好呢?模拟开关可以实现吗? » 2020-03-12 10:35:12

74HC4052,双路4通道多路复用,1片可以接4个串口的TX/RX。
所以你想接10片要用级联,1片74HC4052接单片机,下面接3片74HC4052。
但我没用过级联,不知道串起来电阻会不会太大。

#138 Re: 全志 SOC » 最近用了V3S的芯片画的一个主控板 就是总提示Allwinner USB FEL device not Fount » 2020-03-11 11:46:50

USB不插这个板子,lsusb一下,和插上板子的比较,是不是多了CP210x这行?如果是,那就是lilo说的问题。

#140 Re: Cortex M0/M3/M4/M7 » STM32F4库函数中几种FFT实现方式对比 » 2020-03-09 12:36:53

回答问题2,对于实数输入,输出的FFT结果是共轭的。所以,对实数输入,常用rfft优化,可以减少运算量。见arm_rfft_*函数。

#141 Re: 全志 SOC » UNIQUE_ID CPU型号F1C100 » 2020-03-06 23:55:43

F1C100s没有。可以用Flash芯片的Unique ID。

#142 Re: 全志 SOC » 【这是一个看完你会回复握草的帖子】 开源项目,Linux名片,使用全志f1c100s » 2020-02-22 15:59:19

1066950103 说:

这电路图 少了一路3.0v的电源 和一些 tv 之类的电容 感觉简单好多啊!不错借鉴原理图。

AVCC和VCC_DRAM允许的电压范围有重叠,但这两个共用一路供电可能不是好主意。DRAM会使纹波比较大,而AVCC需要稳定。
不过如果电路里用不着音频等模拟部分,也无所谓了。

其实我试过TV_VCC和HPVCC都不连也没关系,其他功能能正常用。

#143 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » 请问Qt如何判断一个点是否在多边形内部呢? » 2020-02-21 23:24:06

超级萌新 说:

请问这个算法是什么原理?

Qt里有两种算法。比较好理解的一种经典算法是,过该点画一条穿过多边形的直线,数一数和几条边相交。为奇数则点在多边形内。

#146 Re: 全志 SOC » F1C100S 为什么要这么多路电压 » 2020-02-16 17:09:13

成本敏感的话,我一般是3.3V和1.1V用DC-DC,2.8V和2.5V用LDO,这样也简单些也便宜。

#147 Re: 全志 SOC » 跟风画了个F1C200S的小板 【开源PCB】 » 2020-02-12 16:28:55

这个BOM真好,很适合手焊。手焊一堆阻容的时候,一次拿出若干个同样的,点一下BOM列表,照着右边的高亮去找就行。

#148 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 最近一个很火的过时技术WebUSB » 2020-02-09 21:58:50

这个可以,理论上用libusb写的功能都可以实现,所以完全可以把sunxi-fel用网页重写一遍。
WebUSB是Google推的,还没成为正式标准,所以只有Chrome支持。标准和API见 https://github.com/WICG/webusb

#149 Re: 全志 SOC » 全志F1C100S 做了块小板子 » 2020-02-04 17:53:01

TF卡盖住的地方还可以放东西,这个操作可以,省面积了。只是不知道有没有干扰。

#150 Re: 全志 SOC » 全志F1C100S 做了块小板子 » 2020-02-04 17:49:08

Aysi 说:

TF卡隔壁圆的是喇叭?一直想找这种喇叭, 请问喇叭型号是什么?

五向开关。
所以你是想找贴片的喇叭?这种贴片蜂鸣器可以当音质很差的喇叭用 https://item.szlcsc.com/96500.html

#151 Re: 全志 SOC » 自己做的板子 Flash 无法识别的问题 » 2020-01-25 00:31:51

SPI Nand和SPI Nor Flash的命令看起来并没有大差别,要修改sunxi-fel应该也不难支持上。

#152 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 这种小孩的玩具可以自发电吗? » 2020-01-22 19:55:11

这是装纽扣电池,转起来会亮的玩具吗?
叫什么?我们小时候是用大纽扣做的,两只手一拉一拉旋转。

#153 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 刚刚翻京东方 bp101wx1-206 的手册, 发现有一个 CABC_EN 引脚, 搜了一下,这个神奇的功能 » 2020-01-13 19:23:53

jimmy 说:

是在屏幕里面嵌入一个芯片, 专门计算当前帧的亮度, 然后再调整亮度吗?

LCD本来就需要驱动芯片,这就是驱动芯片的高级功能。实时计算画面内容的亮度,如果整体亮度都暗,就把RGB值整体调大(浅),把背光调暗。

#155 Re: Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » 为什么 163.com 和 qq.com 的官网字符编码都改成了 gbk/gb2312 了呢? » 2020-01-03 15:56:45

刚改的吗,还是一直是这样?如果一直这样,可能是为了兼容国内的老旧浏览器。

#156 Re: 全志 SOC » 烧写usb报错 » 2020-01-02 23:51:23

CS引脚加个上拉试试?把CS引脚用10K电阻接到3.3V。
看了几种开发板,CS都是有上拉的。

#157 Re: 全志 SOC » 烧写usb报错 » 2020-01-02 12:47:58

cris8259 说:

root@hj-virtual-machine:/home/hj# sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
root@hj-virtual-machine:/home/hj# sudo sunxi-fel -p read  0x20000000  10240  read.dat
root@hj-virtual-machine:/home/hj# sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
root@hj-virtual-machine:/home/hj#

如果read内存10kB可以,spiflash-read不行,那可能还不是USB的问题。
sunxi-fel spiflash-info 试试。如果涉及flash的都出错,那把flash部分的原理图贴一下看看?

#159 Re: 全志 SOC » 烧写usb报错 » 2019-12-31 15:05:08

cris8259 说:

读写都不行
root@hj-virtual-machine:/home/hj# sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
root@hj-virtual-machine:/home/hj# sudo sunxi-fel -p spiflash-read  0x0  1024  read.dat
usb_bulk_send() ERROR -1: Input/Output Error
root@hj-virtual-machine:/home/hj# sunxi-fel ver
usb_bulk_send() ERROR -1: Input/Output Error

不是spiflash-read,就是read/readl读内存。看不涉及flash的操作有没有问题;读小块内存、读大块内存有没有区别。

#160 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 求推荐一款芯片.支持双摄(>=5M).性价比要高.资料要开放程度大,开发简单. » 2019-12-31 14:57:46

晕哥小弟 说:

没有.就双摄 >= 5M就行

要说一下双摄是怎么用的。如果是相机类,双摄不同时开,应该可以把两个摄像头的引脚接在一起,powerdown分开控制,mclk上加个模拟开关。

#162 Re: 全志 SOC » 烧写usb报错 » 2019-12-31 00:25:37

cris8259 说:

自己画了个板子,usb能识别,但是烧写报错是怎么回事

root@hj-virtual-machine:/home/hj# sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
root@hj-virtual-machine:/home/hj# sudo sunxi-fel -p spiflash-write 0 u-boot/u-boot-sunxi-with-spl.bin
usb_bulk_send() ERROR -1: Input/Output Error

用sunxi-fel的read和write读写大块内存试试,看是不是USB传输数据量比较大时就出错。

#164 Re: 全志 SOC » 【这是一个看完你会回复握草的帖子】 开源项目,Linux名片,使用全志f1c100s » 2019-12-25 14:45:03

xgui 说:

第一张图,三个那么小的功率电感,看起来应该是0805封装,请问如何做到的?哪里有买?

立创商城,搜功率电感,封装选0805。内阻比较大,没用过。

#166 Re: 全志 SOC » 【这是一个看完你会回复握草的帖子】 开源项目,Linux名片,使用全志f1c100s » 2019-12-25 13:02:48

以前看到好几个国外玩家做PCB名片的,都是插USB供电。比较有意思的有这个 StyloCard https://mitxela.com/projects/stylocard,在名片上做了个MIDI键盘。

#167 Re: 全志 SOC » 多个SOC的耳机音频输出,是否可以汇聚一点? » 2019-12-15 23:22:43

迪卡 说:

https://whycan.cn/files/members/1228/agrgdd.png
还有1个SOC的输出,可不可以即接到耳机孔,也接到功放呢?

如果是想要同时接功放和耳机,一般会让插耳机时喇叭静音,需要用到图中耳机插座的1和5脚。
未插耳机时1和5脚是内部有个铜片是闭合的,当耳机插入时把铜片顶开,1和5脚断开。利用这个信号改变功放芯片的使能,使喇叭静音。同时,主控端也可以利用这个信号检测耳机插入,做到耳机和外放有不同的音量控制。

#168 Re: 全志 SOC » 多个SOC的耳机音频输出,是否可以汇聚一点? » 2019-12-15 23:15:25

迪卡 说:

我看到这样一个原理图,将SOC的HPR 和 HPL,通过串联电容和电阻,汇聚到了一点,然后再通过电容电阻接到了功放上面。
我画个图示意一下:
https://whycan.cn/files/members/1228/%20(2).png
我想,我如果有2个SOC,我是不是可以将两个SOC的HPR HPL都接到一个3.5MM耳机座上。像这样。
https://whycan.cn/files/members/1228/asvbsSdfdd.png
不知道这样可不可行,对音频这部分不太懂...

图1电路的作用是双声道转单声道,即把两个声道的信号取平均值。
按图2,两个Soc输出的左声道用电阻接在一起,当只有一个Soc输出声音时,另一边不一定处于什么状态。如果是HPR1是高阻态,则最后输出的信号应该约等于HPR2;如果HPR1是静音但仍在输出,则最后的信号约为HPR2的一半。所以可能会有音量不确定的情况。

#169 Re: 全志 SOC » 今天确定了两件事:F1C100S的CPU频率和DRAM频率设置 » 2019-12-13 08:48:30

kekemuyu 说:

没有休眠模式

你可以试试用这个汇编进入类似于休眠状态,但功耗也不会非常低。

__asm__ __volatile__("mcr p15, 0, %0, c7,c0,4" :: "r"(0));

这是ARM926EJ-S手册上提到的 Dynamic power management (wait for interrupt mode) 。我只简单试了一下,在我的板子上低了10mA。没试过唤醒:D。

#170 Re: 全志 SOC » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-12-10 11:28:04

gui401 说:

你好@达克罗德  我用这个裸机工程在while(1)里通过寄存器翻转某个IO,示波器测频率只能达到3MHz,有办法提高吗?while里就read32和write32语句写0写1都执行一次读写,按道理不应该这么慢啊

确实就是这么慢。如果你翻转时,同一组的其他IO口的状态是确定的,那可以省略一次read32,直接写值,速度能到6.xMHz。

#171 Re: 全志 SOC » 电池电量检测 » 2019-12-03 20:21:49

cris8259 说:

请问,f1c100s用电池供电的话
1. 电池电量怎么检测,用LRADC吗?大概是个什么用法?
2. 像电池供电设备长按开关机是怎么实现的?
3. USB给锂电池充电求便宜好用的芯片

这几个我正都有用到,说说做法:
先说长按开关机
Screen%20Shot%202019-12-03%20at%2020_06_10.png

S1是电源键,按下后Q1导通,系统上电。系统启动后把PWD_EN引脚置高,就能保持开机。
S1的按下状态可以通过BUT_POWER检测到,长按关机就是把PWD_EN置低。
我这里是需要较大电流放电,所以Q1用了功率MOS管。也可以直接接DC-DC的使能。

电量检测是把VIN接两个电阻分压,分到1.xV以下,接LRADC。LRADC有寄存器可以读到电压值,精度比较粗,勉强够用。

便宜的单节锂电池充电用4056。

#172 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » 8款免费/开源的 CAD 软件 » 2019-12-02 13:17:15

达克罗德 说:

为啥我下的qcad也是试用版,难道不再开源免费了?

有些插件不开源,是试用版,比如DWG支持。

#173 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 新手买了个示波器, 是坏的吗? » 2019-11-17 23:28:53

playflash 说:

谢谢指点。 1mv档位, 8格算8mv的话, 噪声有1/8。
实际上我用到20mv档位, 在这个档位,也有10mv的噪声,勉强能用。

默认垂直位置不居中,如第一个图,向上偏移了一格,是故障吗 ?

不知道你是用来测什么。在大多数应用里,根本不需要测到这个精度。不管是1mV还是10mV,都是很小的。
实际上我平时用的示波器最小一档精度也就20mV,20mV档时噪声很多,只能看个大概。很少用的着100mV以下档位。
你可以先把右上角“耦合-交流”切换成“直流”,调到1V档位,直接量电池的正负极。波形如果很直,没有噪声,那就基本没问题。再慢慢调到更高精度档位,看什么时候出现明显的噪声。

至于在1mV档位下,向上偏了0.5mV……实在太小了,就忽略吧。

#174 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 新手买了个示波器, 是坏的吗? » 2019-11-16 08:24:47

1mV档这个噪声算很小吧,不管测什么,环境带来的干扰都会有,1mV档太敏感了。
切到100mV档,测个电池看看?

#175 Re: 全志 SOC » 哈,用JLink把全志allwinner V3s内置的BROM读出来了 » 2019-10-29 17:28:14

晕哥 说:
qiefei 说:

the brom codes are on the github!

在哪里,有没有地址?

这个? https://github.com/allwinner-zh/bootloader

#176 Re: Cortex M0/M3/M4/M7 » 关于6轴惯性模块的姿态解算问题请教 » 2019-10-29 09:12:17

钱泰多 说:

加速度,四元数,欧拉角这些我都知道怎么得到,只是 我所说的“提起”  “放下”  是一个动态的过程,有加速度变化的过程,我想知道的是如何识别这个过程,相关算法和思路

从加速度里去除重力加速度,加速度积分得到速度,速度积分得到位移。
检测:一段时间内,速度从接近0(<a),到>m,又到<a。在这段时间内,位移>n,则为提起。同理反过来是放下。

#178 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » Freetype 内存回收 » 2019-10-05 19:42:21

cache是自动管理的,不用清理。如果调用Freetype取字符位图比较频繁,还是让Freetype自己管理cache比较好。

#179 Re: 全志 SOC » 刚入坑f1c100s,萌新有问 » 2019-09-30 11:20:25

cris8259 说:
ippen 说:

9. 短接1、4脚可以让f1c100s无法识别spi flash,进入usb fel 模式,这个我经常干,用来刷spi flash的

能用就行。只是没搞明白,cs拉低为啥能行,我们用stm32硬件里有时候把cs直接接地,可以省一个IO脚

不同的SPI设备,CS用法不一样。SPI Flash的CS也是用来传输信号的,表示命令的边界。所以CS一直拉低就不能正常从Flash读数据了。
其他SPI设备有的只要一直拉低着CS就能用,这时CS就仅仅是片选的作用。

#180 Re: ESP32/ESP8266 » m5stickc积木式编程 » 2019-09-24 09:07:36

firstman 说:

这个是基于编程猫改的吧,界面很像

Google Blockly为基础做的。

#182 Re: 全志 SOC » 荔枝派licheepi nano 全志(allwinnner) F1C100s 9.9¥ 开发板记录 (多图,流量党慎入!) » 2019-09-01 21:49:09

迪卡 说:

818有时候也不正常,不一定保证每个板子都可以。
目前我试的720Mhz每个板子都可以的

Mark.
超到720MHz功耗增加多少?发热厉害吗?

#183 Re: 全志 SOC » 开源自己画的一个F1C100S板子和原理图,摄像头和屏幕同时引出,所有io引出 » 2019-08-21 20:16:04

谢谢,学习了。用F1C100s画了好几块板了,每次供电部分都布得很纠结。下次学你的做法,在底部焊盘周围走线。
发现我把底部焊盘画的过大了,所以没什么空间走线。

#184 Re: 全志 SOC » xboot的json配置各个字段的意思 » 2019-07-28 22:17:06

xboot没有很详细的文档,最好的方法是,对照芯片手册读驱动代码。这些字段一般都是读出来后,用于读写某个寄存器,或者算寄存器地址。
gpio-count是这一组IO口的数量,PA/PB等等是一组IO口,具体包含几个不一定。

#185 Re: 全志 SOC » F1C100S 看门狗时钟源LOSC使能找不到在哪 » 2019-07-19 13:10:34

LOSC是内置的振荡器吧,不用使能,直接用就好。

#186 Re: 全志 SOC » 编译、安装Windows版本sunxi-fel步骤 (32M spi flash补丁,支持W25Q256/MX25L256) » 2019-07-10 13:10:06

hzpyl 说:

请问
运行zadig-2_3.exe
USB选择,只能显示 Unknown Device #1   (上面那个是鼠标)
会是什么问题?

启动时短路Flash 1、4脚了吗?如果操作正确还进不去FEL模式,那大概率是硬件问题。

#189 Re: 全志 SOC » F1C100s如何在uboot触发芯片进入usb otg烧录模式 » 2019-07-03 23:52:09

xm1994 说:

uboot: go 0xffff0020

这样进入FEL模式,可以用sunxi-fel操作SPI Flash吗?我在自己的代码中跳转到0xffff0020,能进入FEL模式,但操作Flash失败。
之前研究了一下下最后也没成功 https://whycan.cn/t_2072.html

#190 Re: 全志 SOC » F1C100S核心板嘉立创打样成本费用计算 » 2019-06-18 21:47:41

迪卡 说:

手册可以分享一下吗?一直在用C600的手册做C100s。

#191 Re: 全志 SOC » F1C100S PE11 CLK_OUT输出时钟问题 » 2019-06-15 10:18:36

你是裸奔代码吗?参考https://whycan.cn/t_1457.html代码里的PWM驱动。duty和period要参考手册计算一下,忘了是多少了,可以调成12MHz占空比50%的波形。

#192 Re: 全志 SOC » Setup toolchain for F1C100S / F1C200S on OSX 在OSX上为F1C100S/F1C200S设置 » 2019-06-15 10:10:35

@hoel  I develop for F1C100s on OSX, but the toolchain configuration may depend on what you are building. I only build barebone code and XBoot, no Linux or U-Boot.
You can first try the barebone code minimal_f1c100s_framebuffer.zip from this post: https://whycan.cn/t_1457.html.

1. Download the official gcc-arm-none-eabi from https://launchpad.net/gcc-arm-embedded/+download. I'm using an older version gcc-arm-none-eabi-5_2-2015q4. Extract and add `gcc-arm-none-eabi/bin` to PATH.

2. Extract minimal_f1c100s_framebuffer.zip. Edit `Makefile`, change `CROSS_COMPILE` to `arm-none-eabi-`.
3. `cd tools/mksunxi`, delete the Linux version `mksunxi` and make the OSX version.
3. Run `make` in `minimal_f1c100s`. The build succeeds if you see output "The bootloader head has been fixed".

4. `git clone https://github.com/Icenowy/sunxi-tools.git -b spi-rebase`, then build the OSX version of sunxi-tools.
5. Run `sunxi-fel -p spiflash-write 0 build/firmware.bin` to download the firmware to F1C100s.

#193 Re: 全志 SOC » F1C100S PE11 CLK_OUT输出时钟问题 » 2019-06-15 09:33:23

CSI_CLK的意思不是摄像头MCLK,是芯片内CSI功能的时钟。
摄像头MCLK我是用F1C100s的PWM代替有源晶振,PE12(PWM0)调成12M输出,妥妥的。

#194 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 买了个MICROMAKE LCD光固化打印机,打印whycan.cn网址测试了一下精度很高 » 2019-06-13 09:35:13

有个ONO 3D打印机,比这个还简单,连LCD屏都不要,是把手机塞到机器底部,用手机屏幕发出的光去固化树脂。手机App控制屏幕上显示的光点,一层一层固化,打印机本身只负责一层层提升打印平台。
不过他们家的树脂是特殊的,不是常见的紫外线固化树脂。
机器只要99美元,树脂比普通的贵。

#195 全志 SOC » CES Asia上的全志展台 » 2019-06-13 09:23:49

Quotation
回复: 1

在上海举办的CES Asia,全志展台感觉是几家代理商展示各种方案和产品。
还看到了F1C100s做的掌机。

IMG_20190611_143514.jpg
IMG_20190611_143939.jpg
IMG_20190611_144128.jpg

#196 Re: 全志 SOC » 哪款芯片能同时接摄像头和LCD? » 2019-06-10 23:25:51

tianjjff 说:

DVP驱动可否参考一下,正在驱动摄像头

CSI部分驱动如下。没有考虑什么通用性,只是针对我需要的数据格式。(UYVY -> YUV422)
只有捕捉单张图像,没有视频。

/*
 * driver/csi-f1c100s.c
 */

#include <xboot.h>
#include <clk/clk.h>
#include <reset/reset.h>
#include <gpio/gpio.h>
#include <csi/csi.h>

enum {
    CSI_EN				= 0x000,
    CSI_CFG				= 0x004,
    CSI_CAP 			= 0x008,
    CSI_SCALE			= 0x00c,
    CSI_FIFO0_BUFA		= 0x010,
    CSI_FIFO0_BUFB		= 0x014,
    CSI_FIFO1_BUFA		= 0x018,
    CSI_FIFO1_BUFB		= 0x01c,
    CSI_FIFO2_BUFA		= 0x020,
    CSI_FIFO2_BUFB		= 0x024,
    CSI_BUF_CTL			= 0x028,
    CSI_BUF_STA			= 0x02c,
    CSI_INT_EN			= 0x030,
    CSI_INT_STA			= 0x034,
    CSI_HSIZE			= 0x040,
    CSI_VSIZE			= 0x044,
    CSI_BUF_LEN			= 0x048,
};

enum {
    CSI_SIZE_MASK		= 0x1fff,	// 13 bits
};

struct csi_f1c100s_pdata_t {
    virtual_addr_t virt;
    char * clk;
    char * dramclk;
    int reset;
    int hsync;
    int hsynccfg;
    int vsync;
    int vsynccfg;
    int pclk;
    int pclkcfg;
    int database;
    int datacfg;
    int databits;
};

static void csi_f1c100s_get_size(struct csi_t * csi, int* width, int* height)
{
    struct csi_f1c100s_pdata_t * pdat = (struct csi_f1c100s_pdata_t *)csi->priv;

    if (width) {
        *width = (read32(pdat->virt + CSI_HSIZE) >> 16) & CSI_SIZE_MASK;
    }
    if (height) {
        *height = (read32(pdat->virt + CSI_VSIZE) >> 16) & CSI_SIZE_MASK;
    }
}

static void csi_f1c100s_set_size(struct csi_t * csi, int width, int height)
{
    struct csi_f1c100s_pdata_t * pdat = (struct csi_f1c100s_pdata_t *)csi->priv;

    uint32_t hsize = read32(pdat->virt + CSI_HSIZE);
    hsize &= ~(CSI_SIZE_MASK << 16) & ~(CSI_SIZE_MASK << 0);
    hsize |= ((width * 2) & CSI_SIZE_MASK) << 16;  // YUV每像素2字节
    write32(pdat->virt + CSI_HSIZE, hsize);

    uint32_t vsize = read32(pdat->virt + CSI_VSIZE);
    vsize &= ~(CSI_SIZE_MASK << 16) & ~(CSI_SIZE_MASK << 0);
    vsize |= (height & CSI_SIZE_MASK) << 16;
    write32(pdat->virt + CSI_VSIZE, vsize);

    // buffer len
    uint32_t buflen = read32(pdat->virt + CSI_BUF_LEN);
    buflen &= ~(CSI_SIZE_MASK << 0);
    buflen |= (width & CSI_SIZE_MASK);  // Y最长,每像素1字节
    write32(pdat->virt + CSI_BUF_LEN, buflen);
}

static void csi_f1c100s_set_buffer(struct csi_t * csi, void* buffer, int len)
{
    struct csi_f1c100s_pdata_t * pdat = (struct csi_f1c100s_pdata_t *)csi->priv;

    // 只用BUFA,3个FIFO必须都设置上
    write32(pdat->virt + CSI_FIFO0_BUFA, (uint32_t)buffer);
    write32(pdat->virt + CSI_FIFO1_BUFA, (uint32_t)buffer + len * 2 / 4);
    write32(pdat->virt + CSI_FIFO2_BUFA, (uint32_t)buffer + len * 3 / 4);
    write32(pdat->virt + CSI_BUF_CTL, read32(pdat->virt + CSI_BUF_CTL) & ~(1 << 0));
}

static int csi_f1c100s_capture_still(struct csi_t * csi)
{
    struct csi_f1c100s_pdata_t * pdat = (struct csi_f1c100s_pdata_t *)csi->priv;

    // begin capture
    write32(pdat->virt + CSI_CAP, read32(pdat->virt + CSI_CAP) | (1 << 0));
    // clear int status
    write32(pdat->virt + CSI_INT_STA, read32(pdat->virt + CSI_INT_STA));

    // wait for capture start then stop
    ktime_t timeout = ktime_add_ms(ktime_get(), 2000);
    int captured = 0;
    do {
        if(read32(pdat->virt + CSI_INT_STA) & (1 << 0)) {
            captured = 1;
            break;
        }
    } while(ktime_before(ktime_get(), timeout));

    return captured;
}

static struct device_t * csi_f1c100s_probe(struct driver_t * drv, struct dtnode_t * n)
{
    struct csi_f1c100s_pdata_t * pdat;
    struct csi_t * csi;
    struct device_t * dev;
    virtual_addr_t virt = phys_to_virt(dt_read_address(n));
    char * clk = dt_read_string(n, "clock-name", NULL);
    char * dramclk = dt_read_string(n, "dram-clock-name", NULL);

    pdat = malloc(sizeof(struct csi_f1c100s_pdata_t));
    if(!pdat)
        return FALSE;

    csi = malloc(sizeof(struct csi_t));
    if(!csi)
    {
        free(pdat);
        return FALSE;
    }

    pdat->virt = virt;
    pdat->clk = strdup(clk);
    pdat->dramclk = strdup(dramclk);
    pdat->reset = dt_read_int(n, "reset", -1);
    pdat->hsync = dt_read_int(n, "hsync-gpio", -1);
    pdat->hsynccfg = dt_read_int(n, "hsync-gpio-config", -1);
    pdat->vsync = dt_read_int(n, "vsync-gpio", -1);
    pdat->vsynccfg = dt_read_int(n, "vsync-gpio-config", -1);
    pdat->pclk = dt_read_int(n, "pclk-gpio", -1);
    pdat->pclkcfg = dt_read_int(n, "pclk-gpio-config", -1);
    pdat->database = dt_read_int(n, "data-gpio-base", -1);
    pdat->datacfg = dt_read_int(n, "data-gpio-config", -1);
    pdat->databits = dt_read_int(n, "data-bits", -1);

    csi->name = alloc_device_name(dt_read_name(n), -1);
    csi->get_size = csi_f1c100s_get_size;
    csi->set_size = csi_f1c100s_set_size;
    csi->set_buffer = csi_f1c100s_set_buffer;
    csi->capture_still = csi_f1c100s_capture_still;
    csi->priv = pdat;

    clk_enable(pdat->clk);
    clk_enable(pdat->dramclk);
    if(pdat->reset >= 0) {
        reset_deassert(pdat->reset);
    }
    if(pdat->hsync >= 0) {
        if(pdat->hsynccfg >= 0) {
            gpio_set_cfg(pdat->hsync, pdat->hsynccfg);
        }
        gpio_set_pull(pdat->hsync, GPIO_PULL_UP);
    }
    if(pdat->vsync >= 0) {
        if(pdat->vsynccfg >= 0) {
            gpio_set_cfg(pdat->vsync, pdat->vsynccfg);
        }
        gpio_set_pull(pdat->vsync, GPIO_PULL_UP);
    }
    if(pdat->pclk >= 0) {
        if(pdat->pclkcfg >= 0) {
            gpio_set_cfg(pdat->pclk, pdat->pclkcfg);
        }
        gpio_set_pull(pdat->pclk, GPIO_PULL_UP);
    }
    if (pdat->database) {
        for (int i = 0; i < pdat->databits; i++) {
            if(pdat->datacfg >= 0) {
                gpio_set_cfg(pdat->database + i, pdat->datacfg);
            }
            gpio_set_pull(pdat->database + i, GPIO_PULL_UP);
        }
    }

    // input format: YUV422
    // input sequence: UYVY
    // output format: planar YUV 422
    // vref polarity: high
    // href polarity: low
    // pclk polarity: high
    write32(pdat->virt + CSI_CFG,
            (3 << 20) | (0 << 16) | (2 << 8)  // YUV
            | (1 << 2) | (1 << 1) | (0 << 0));
    write32(pdat->virt + CSI_EN, read32(pdat->virt + CSI_EN) | (1 << 0));

    if(!register_csi(&dev, csi))
    {
        clk_disable(pdat->clk);
        free(pdat->clk);

        clk_disable(pdat->dramclk);
        free(pdat->dramclk);

        free_device_name(csi->name);
        free(csi->priv);
        free(csi);
        return NULL;
    }
    dev->driver = drv;

    return dev;
}

static void csi_f1c100s_remove(struct device_t * dev)
{
    struct csi_t * csi = (struct csi_t *)dev->priv;
    struct csi_f1c100s_pdata_t * pdat = (struct csi_f1c100s_pdata_t *)csi->priv;

    if(csi && unregister_csi(csi))
    {
        clk_disable(pdat->clk);
        free(pdat->clk);

        clk_disable(pdat->dramclk);
        free(pdat->dramclk);

        free_device_name(csi->name);
        free(csi->priv);
        free(csi);
    }
}

static void csi_f1c100s_suspend(struct device_t * dev)
{
}

static void csi_f1c100s_resume(struct device_t * dev)
{
}

static struct driver_t csi_f1c100s = {
    .name		= "csi-f1c100s",
    .probe		= csi_f1c100s_probe,
    .remove		= csi_f1c100s_remove,
    .suspend	= csi_f1c100s_suspend,
    .resume		= csi_f1c100s_resume,
};

static __init void csi_f1c100s_driver_init(void)
{
    register_driver(&csi_f1c100s);
}

static __exit void csi_f1c100s_driver_exit(void)
{
    unregister_driver(&csi_f1c100s);
}

driver_initcall(csi_f1c100s_driver_init);
driver_exitcall(csi_f1c100s_driver_exit);

以下为SCCB部分,SCCB只是I2C的特例,所以就在I2C驱动里加了2个函数:

int i2c_sccb_write(const struct i2c_device_t * dev, uint8_t reg, uint8_t data)
{
	uint8_t msg_data[2] = { reg, data };
	struct i2c_msg_t msg[1];

	msg[0].addr = dev->addr;
	msg[0].flags = 0;
	msg[0].len = 2;
	msg[0].buf = msg_data;

	int ret = i2c_transfer(dev->i2c, msg, 1);
	return (ret == 1) ? 1 : 0;
}

int i2c_sccb_read(const struct i2c_device_t * dev, uint8_t reg, uint8_t* out)
{
	uint8_t msg_data[2] = { reg, 0xee };
	struct i2c_msg_t msg[2];

	// write address
	msg[0].addr = dev->addr;
	msg[0].flags = 0;
	msg[0].len = 1;
	msg[0].buf = msg_data;

	// read back
	msg[1].addr = dev->addr;
	msg[1].flags = I2C_M_RD;
	msg[1].len = 1;
	msg[1].buf = msg_data + 1;

  	int ret = i2c_transfer(dev->i2c, msg, 2);
  	if (ret == 2) {
  		*out = msg_data[1];
  		return 1;
  	} else {
  		return 0;
  	}
}

#199 Re: 全志 SOC » F1C100s的ADC和模拟参考电压关系 » 2019-05-29 11:01:43

我的板子照着荔枝派Nano(F1C100s)画的,接法跟你的不一样。你的接法跟彩虹派(V3s)、F1C100唱戏机是一样的。
看起来,只在VRA2接200K电阻到GND是合理的,VRA1不需要接电阻。

VRA接法

#200 Re: 全志 SOC » F1C100s的ADC和模拟参考电压关系 » 2019-05-24 10:58:06

阻值一样啊。这可蹊跷了,难道有不同版本的芯片?

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn