WhyCan Forum(哇酷开发者社区)

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

您尚未登录。

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

liuyuedong 说:

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

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

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

liuyuedong 说:

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

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

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

Quotation
回复: 7

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

#5 Re: 全志 V3S/F1C100s/X3 » F1C200s 驱动 SPI+RGB 屏的接线问题 » 2020-09-10 08:26:02

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

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

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

#9 Re: 全志 V3S/F1C100s/X3 » 荔枝派声音问题 » 2020-08-04 13:02:48

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

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

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

#11 Re: 全志 V3S/F1C100s/X3 » 请教SPI Flash的量产烧录方法 » 2020-07-31 13:52:19

ifree64 说:

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

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

#12 Re: 全志 V3S/F1C100s/X3 » 全志 V3S 硬件设计指南[PDF] » 2020-07-17 09:26:54

HY 说:

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

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

#13 Re: 全志 V3S/F1C100s/X3 » F1C100S GPIO中断延迟比较大 » 2020-07-17 09:25:27

陈卫国 说:

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

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

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

Tony 说:

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

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

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

flex-A 说:

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

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

#16 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就很小。

#17 Re: 全志 V3S/F1C100s/X3 » 有需要audio技术支持的吗? » 2020-06-29 11:57:55

akinggw 说:

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

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

#18 Re: 全志 V3S/F1C100s/X3 » 能裸机调用GPU吗? » 2020-06-24 14:34:03

Blueskull 说:

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

多谢!

#19 全志 V3S/F1C100s/X3 » 能裸机调用GPU吗? » 2020-06-24 12:00:13

Quotation
回复: 11

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

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

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

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

Quotation
回复: 2

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

#22 Re: 全志 V3S/F1C100s/X3 » F1C100s看门狗失效bug » 2020-06-16 10:06:54

myxiaonia 说:

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

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

#23 全志 V3S/F1C100s/X3 » F1C100s能用并行Flash吗? » 2020-06-10 16:27:40

Quotation
回复: 2

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

#24 Re: 全志 V3S/F1C100s/X3 » 迪卡电子的F1C200S PDA正在焊接 » 2020-06-05 23:41:07

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

#25 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)) {}

#27 Re: 全志 V3S/F1C100s/X3 » 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。

#28 Re: 全志 V3S/F1C100s/X3 » F1C100S裸机 Timer USB HOST » 2020-05-23 11:14:39

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

#29 Re: 全志 V3S/F1C100s/X3 » 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();  // 野指针使用,危险!

#30 全志 V3S/F1C100s/X3 » 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();  // 调用基类的第二个虚函数(第一个没问题),从这里就死机了。看门狗无效。

#31 Re: 全志 V3S/F1C100s/X3 » F1C100S程序烧写问题 » 2020-05-20 17:09:20

ly123 说:

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

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

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

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

#33 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 手机上常用的这种连接器叫什么? » 2020-05-13 12:32:41

自己查到了,是 BTB/板对板/板对FPC 连接器。到立创上搜 板对板 就有了。

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

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

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

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

#38 Re: 全志 V3S/F1C100s/X3 » 自制F1C100S核心板 (开源PCB) » 2020-05-05 00:30:44

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

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

xxzouzhichao 说:

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

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

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

Quotation
回复: 9

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

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

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

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

raspberryman 说:

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

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

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

迪卡 说:

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

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

#45 Re: 全志 V3S/F1C100s/X3 » 调通F1C100s的SPI DMA » 2020-04-26 17:29:19

ntmusic 说:

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

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

#46 Re: 全志 V3S/F1C100s/X3 » 调通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)。

#47 Re: 全志 V3S/F1C100s/X3 » 调通F1C100s的SPI DMA » 2020-04-26 17:16:52

泡在妞里的Feel 说:

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

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

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

#48 Re: 全志 V3S/F1C100s/X3 » 调通F1C100s的SPI DMA » 2020-04-26 17:09:13

Quotation 说:

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

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

#49 Re: 全志 V3S/F1C100s/X3 » 关于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;
  }
}

#51 全志 V3S/F1C100s/X3 » 调通F1C100s的SPI DMA » 2020-04-25 00:28:20

Quotation
回复: 16

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开始数据不正确了。可能是缓存的原因,待研究。

#52 Re: 全志 V3S/F1C100s/X3 » 分享自制的使用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型号有关。

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

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

#54 Re: 全志 V3S/F1C100s/X3 » 分享自制的使用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。

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

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

#56 Re: 全志 V3S/F1C100s/X3 » 谁有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了。

#57 Re: 全志 V3S/F1C100s/X3 » 开源自己画的一个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。

#58 Re: 全志 V3S/F1C100s/X3 » 求大佬帮我看一下自制F1C200S小板子 » 2020-04-15 10:25:12

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

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

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

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

Quotation
回复: 15

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

#62 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » PCB台历 » 2020-04-10 18:21:16

酷。
文字做成阻焊开窗,沉金板,黑金配色更酷了。

#63 Re: 全志 V3S/F1C100s/X3 » F1C100S U盘速度 » 2020-04-01 09:42:36

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

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

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

#65 Re: 全志 V3S/F1C100s/X3 » EA3036芯片老烧大家帮我分析下。。 » 2020-03-31 10:50:28

杨飞武 说:

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

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

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

wujique 说:

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

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

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

Quotation
回复: 4

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

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

#68 Re: 全志 V3S/F1C100s/X3 » 全志F1C200S原理图+PCB(公版) » 2020-03-27 13:36:51

Gentlepig 说:

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

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

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

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

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

v_8787 说:

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

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

#72 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 请问立创商城 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多含税,淘宝是仿品+不含税,差的就没那么大了。

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

JenniferL 说:

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

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

#76 Re: 全志 V3S/F1C100s/X3 » 网上看到的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样品。

#77 Re: 全志 V3S/F1C100s/X3 » 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贴一下,多写了个括号吧?

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

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

#81 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。
但我没用过级联,不知道串起来电阻会不会太大。

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

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

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

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

#86 Re: 全志 V3S/F1C100s/X3 » UNIQUE_ID CPU型号F1C100 » 2020-03-06 23:55:43

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

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

1066950103 说:

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

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

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

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

超级萌新 说:

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

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

#91 Re: 全志 V3S/F1C100s/X3 » F1C100S 为什么要这么多路电压 » 2020-02-16 17:09:13

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

#92 Re: 全志 V3S/F1C100s/X3 » 跟风画了个F1C200S的小板 【开源PCB】 » 2020-02-12 16:28:55

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

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

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

#94 Re: 全志 V3S/F1C100s/X3 » 全志F1C100S 做了块小板子 » 2020-02-04 17:53:01

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

#95 Re: 全志 V3S/F1C100s/X3 » 全志F1C100S 做了块小板子 » 2020-02-04 17:49:08

Aysi 说:

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

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

#96 Re: 全志 V3S/F1C100s/X3 » 自己做的板子 Flash 无法识别的问题 » 2020-01-25 00:31:51

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

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

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

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

jimmy 说:

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

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

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

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

#101 Re: 全志 V3S/F1C100s/X3 » 烧写usb报错 » 2020-01-02 23:51:23

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

#102 Re: 全志 V3S/F1C100s/X3 » 烧写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部分的原理图贴一下看看?

#104 Re: 全志 V3S/F1C100s/X3 » 烧写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的操作有没有问题;读小块内存、读大块内存有没有区别。

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

晕哥小弟 说:

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

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

#107 Re: 全志 V3S/F1C100s/X3 » 烧写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传输数据量比较大时就出错。

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

xgui 说:

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

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

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

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

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

迪卡 说:

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

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

#113 Re: 全志 V3S/F1C100s/X3 » 多个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的一半。所以可能会有音量不确定的情况。

#114 Re: 全志 V3S/F1C100s/X3 » 今天确定了两件事: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。

#115 Re: 全志 V3S/F1C100s/X3 » F1C100S裸奔framebuffer+PWM+GPIO驱动 » 2019-12-10 11:28:04

gui401 说:

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

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

#116 Re: 全志 V3S/F1C100s/X3 » 电池电量检测 » 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。

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

达克罗德 说:

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

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

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

playflash 说:

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

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

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

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

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

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

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

晕哥 说:
qiefei 说:

the brom codes are on the github!

在哪里,有没有地址?

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

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

钱泰多 说:

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

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

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

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

#124 Re: 全志 V3S/F1C100s/X3 » 刚入坑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就仅仅是片选的作用。

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

firstman 说:

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

Google Blockly为基础做的。

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

迪卡 说:

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

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

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

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

#129 Re: 全志 V3S/F1C100s/X3 » xboot的json配置各个字段的意思 » 2019-07-28 22:17:06

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

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

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

#131 Re: 全志 V3S/F1C100s/X3 » 编译、安装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模式,那大概率是硬件问题。

#134 Re: 全志 V3S/F1C100s/X3 » 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

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

迪卡 说:

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

#136 Re: 全志 V3S/F1C100s/X3 » F1C100S PE11 CLK_OUT输出时钟问题 » 2019-06-15 10:18:36

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

#137 Re: 全志 V3S/F1C100s/X3 » 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.

#138 Re: 全志 V3S/F1C100s/X3 » F1C100S PE11 CLK_OUT输出时钟问题 » 2019-06-15 09:33:23

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

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

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

#140 全志 V3S/F1C100s/X3 » 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

#141 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和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;
  	}
}

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

有意思呀。LCD比激光振镜好控制多了,不容易损坏,而且能一整层同时发光固化。还这么便宜。

#143 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » CH552编程器 » 2019-05-29 12:16:10

wuxx 说:

自制CPU,硬核玩家!这是homebrew俱乐部精神的延续。

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

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

VRA接法

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

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

#146 Re: 全志 V3S/F1C100s/X3 » F1C100s的ADC和模拟参考电压关系 » 2019-05-23 22:21:43

rf 说:

VRA1,VRA2都是接了一电阻一电容

多大阻值的?

#147 Re: 全志 V3S/F1C100s/X3 » F1C100s的ADC和模拟参考电压关系 » 2019-05-23 16:15:42

rf 说:

兄弟,我的板子AVCC是3.0V,vra都是1.5v,adc值应该加上32767才对。加24000测出来的不对,按理f1c100s,adc读出来是-32767~32768,所以加32767才对的。我还以为是我的电路设计得不对

诶?你这个值更合理啊,VRA1/VRA2电路是怎么接的?我是按照荔枝派Nano画的。

#148 Re: 全志 V3S/F1C100s/X3 » 成功打响在f1c100s运行go程序的第一炮 » 2019-05-19 22:05:57

有意思,Go能编译成native二进制程序确实是大优势。

#149 Re: 全志 V3S/F1C100s/X3 » 有没有音频放大器推荐? » 2019-05-13 16:29:00

木子猫 说:

是mcu+dac,音频数据乘以系数这我了解下 还没想到有这个方法

一般把原始音频数据作为最大音量,用整数乘法加移位代替浮点乘法,运算量很小的。  (v * 50) >> 8 像这样。

#150 Re: 全志 V3S/F1C100s/X3 » 有没有音频放大器推荐? » 2019-05-10 09:34:31

木子猫 说:
Zodiac 说:

https://www.sunrom.com/p/m62429-digital-pot
可以参考下应用电路和代码。两线控制,用起来蛮方便。

看起来确实很简洁

几毛钱的功放用两块多钱的数字电位器调音量,总觉得哪里不对:D

#151 Re: 全志 V3S/F1C100s/X3 » 有没有音频放大器推荐? » 2019-05-10 09:26:48

木子猫 说:
Quotation 说:

3w又便宜的容易找,带I2C的就没有很便宜的了。不知楼主需要的是调节什么参数?

想调节音量

如果功放音频输入是来自SoC输出,那都可以在SoC/MCU端软件调节音量。像全志的SoC,DA本身带音量调节。或者简单的MCU+DAC,只要把取出来的音频数据都乘一个系数就是调音量了。
除非是要做纯粹的音箱,否则不太需要功放带音量调节功能。不带音量调节的功放又好又便宜的很容易找。

#152 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 请问这种螺丝柱是通过什么工艺弄进去的? » 2019-05-10 02:49:51

这是嵌件,不是注塑注进去的,是装配时加热压进去。塑胶件孔径做小一点,装配时把螺母加热,使劲压进去。
这个是相机、摄像头的接口吧。

#153 Re: 全志 V3S/F1C100s/X3 » 有没有音频放大器推荐? » 2019-05-09 09:47:45

3w又便宜的容易找,带I2C的就没有很便宜的了。不知楼主需要的是调节什么参数?

#154 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 弱弱地问一句。有人用模拟开关切换扩展过电容触摸按键不? » 2019-05-09 09:41:24

没试过,猜测应该可以,可能要选性能好一些的模拟开关。
电容触摸按键原理是给小电容反复充放电,电流很小,可以到1微安级别,充放电时间也短。如果模拟开关本身漏电流较大、寄生电容大,可能会影响检测效果。

#156 Re: 全志 V3S/F1C100s/X3 » 一直以为全志第三方烧录软件 sunxi-fel 只有命令行版本,原来社区早就有了GUI版本了, C#写的 » 2019-04-24 14:58:56

这只是个壳,调用了sunxi-fel.exe,不是重新实现一遍。
其实用python写个GUI封一下sunxi-fel的功能,用不了多少行代码。
只是GUI也带不来多少方便,日常使用还不如用命令行,在makefile里调用sunxi-fel,编译完了直接烧录。

#157 Re: 全志 V3S/F1C100s/X3 » 编译、安装Windows版本sunxi-fel步骤 (32M spi flash补丁,支持W25Q256/MX25L256) » 2019-04-18 09:05:13

经过一番猛如狗的装驱动操作,我编译的sunxi-fel.exe不用带libusb-1.0.dll也能用了(捂脸)。
libusb-1.0只是用户态驱动,底层还是需要依赖于Zadig带的那几种驱动。反正是把Zadig里几个驱动挨个装了一遍就好了。

#158 Re: 全志 V3S/F1C100s/X3 » 编译、安装Windows版本sunxi-fel步骤 (32M spi flash补丁,支持W25Q256/MX25L256) » 2019-04-17 14:10:46

Quotation 说:

为什么我照这个步骤编译出来的sunxi-fel.exe有785K,晕哥的版本只有100K。
而且我的运行后无任何输出,连帮助都不打印。
在Ubuntu 18.10上编译的。

哦错了,晕哥版本有400K。

经过试验,发现了把libusb-1.0.dll换成晕哥的版本就可以运行了。我之前用自己编译出的libusb-1.0.dll,大小1M,会导致程序运行后无任何反应。晕哥版本只有253K。编译结果大小的差异是怎么来的呢?

#159 Re: 全志 V3S/F1C100s/X3 » 编译、安装Windows版本sunxi-fel步骤 (32M spi flash补丁,支持W25Q256/MX25L256) » 2019-04-17 12:28:54

为什么我照这个步骤编译出来的sunxi-fel.exe有785K,晕哥的版本只有100K。
而且我的运行后无任何输出,连帮助都不打印。
在Ubuntu 18.10上编译的。

晕哥 说:

有朋友说楼上的文件不能识别f1c100s,
那再重新来一次下载源码,编译.
……

直接用命令行指令编译

i686-w64-mingw32-gcc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/ -DNO_MMAP -I/usr/i686-w64-mingw32/include/libusb-1.0/ -o sunxi-fel.exe fel.c thunk.c progress.c soc_info.c fel_lib.c fel-spiflash.c -lws2_32  -L/usr/i686-w64-mingw32/lib/ -lusb-1.0 -lws2_32 -lwsock32 -lz

Windows平台可执行文件下载: sunxi-tools-win32support_f1c100s_flash_2.7z (已经验证,可以烧录f1c100s 唱戏机与licheepi nano开发板)

Windows 驱动安装方法在1楼.

#160 Re: 全志 V3S/F1C100s/X3 » F1C100S自定义MiniPcie-AD17 » 2019-04-12 23:19:50

肚子开孔倒是个好办法,这样手焊就不用热风枪了。

#161 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 请教,24V车载供电给24V锂电池充电可行吗? » 2019-04-12 00:12:44

Gentlepig 说:
Quotation 说:

锂电池充电要用专门的电源管理芯片,不能直接给个电压就充,否则很有安全性问题。
29.4是7节锂电池串联的,我也不知道用什么芯片,只做过1节和2节的。

电池内部是有保护电路的,但是内部保护电路耐压可能是30V或40V.
我担心的是,车载供电到底稳不稳,会不会有电压较高的时候。

不光是保护的问题,保护板一般只根据电压、电流,保护过充、过放、过流的情况。
充电管理芯片会根据电池实时电压,决定是恒流充还是恒压充,电流太小时切断充电,温度较低时以小电流充电,温度特别低时不充电。这些管理必须要有,否则锂电池容易出事故。

#162 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 请教,24V车载供电给24V锂电池充电可行吗? » 2019-04-11 12:49:44

锂电池充电要用专门的电源管理芯片,不能直接给个电压就充,否则很有安全性问题。
29.4是7节锂电池串联的,我也不知道用什么芯片,只做过1节和2节的。

#165 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 客户委托开发一个检测广告牌 灯光/卷轴电机/玻璃破碎 的前端方案, 用什么技术好呢? » 2019-04-05 21:09:11

1. 玻璃的裂缝不容易检测。如果只检测玻璃破了大洞的情况,可以在广告牌内外设咪头采集声音,如果内外声音音量差别变小了,就是玻璃破了。:D
2. 电机转动检测,在转动轴上固定一块磁铁,旁边用霍尔元件检测磁场。磁场一直不变则电机不转了。
3. 灯管就测电流吧,偏离正常值一定范围都当做有问题。用专门的电流传感器。

#166 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 客户委托开发一个检测广告牌 灯光/卷轴电机/玻璃破碎 的前端方案, 用什么技术好呢? » 2019-04-04 22:43:05

是要用摄像头拍摄图像监测广告牌有没有损坏?还是说用别的传感器监测广告牌被损坏,然后拍下来具体情况?

#168 Re: 全志 V3S/F1C100s/X3 » 关于 SD NAND 的信号切换。成功! » 2019-04-01 17:19:03

把SD Nand的引脚全引出,用测试夹夹上,接主控芯片再接电脑。这样估计也可以。Soc没上电的时候,引脚是高阻态,应该没有影响。
比如有的板子上SPI Flash烧录,就是用专门的夹子夹住接电脑烧的。

#169 Re: 全志 V3S/F1C100s/X3 » 关于 SD NAND 的信号切换。成功! » 2019-04-01 17:16:19

其实理论上sunxi-fel几乎什么都能干,参考sunxi-fel操作Flash的做法。写段C代码,编译成特定的格式,sunxi-fel的格式把代码传给SoC,执行。
当然写起来很麻烦就是了……

#170 Re: RISC-V » AIRV(K210)一体化开源硬件,3月底即将到来啦 » 2019-03-31 12:24:14

问个题外话,一楼这块板左侧的排针,没有塑胶部分,波峰焊时是怎么固定的?还是说先过完波峰焊再把塑胶拔掉?

main.jpg

#171 Re: Cortex M0/M3/M4/M7 » stm32F103定时器问题 » 2019-03-24 01:01:37

Gentlepig 说:

请教,每个定时器的四个PWM通道是固定IO口的,如果我想使任意IO口输出PWM波,能不能用定时器的PWM功能但不产生输出,而是我自己设置IO口?

想了个用DMA的方法也许可行,不占用CPU时间。
用定时器驱动DMA,再利用GPIO BSRR寄存器,交替设置IO口高低电平。

比如要用定时器控制PF3做PWM,首先
uint32_t src[2] = { GPIO_Pin_3, GPIO_Pin_3<<16 };
DMA目标设为src,DMA目标是&GPIOF->BSRR。循环DMA模式。
用定时器的PWM或update等驱动DMA运行,这样DMA向BSRR循环写入两个值,从而让PF3循环切换高低。

#172 Re: 全志 V3S/F1C100s/X3 » F1C100s的ADC和模拟参考电压关系 » 2019-03-22 16:34:37

电压值 = (ADC值 + 24000) / 65535 * AVCC

当ADC读数为0时,电压值==VRA。
ADC读数为-24000时,电压值==0。

#173 Re: 全志 V3S/F1C100s/X3 » Ubuntu core的内存占用,想在s3上移植 » 2019-03-22 13:48:35

镜像文件250MB大小,现在支持树莓派2、3等。
树莓派2是1GB内存,4核ARM A7。感觉跑在S3上会很吃力。

#174 Re: 全志 V3S/F1C100s/X3 » framebuffer对某些特定的颜色显示花屏 » 2019-03-21 16:47:39

smartcar 说:

有没有可能是屏幕问题呢?
换个屏试一试

也有可能……那个屏比较便宜。手头没有别的RGB屏,等调试i80屏的时候再试试。

#175 全志 V3S/F1C100s/X3 » framebuffer对某些特定的颜色显示花屏 » 2019-03-21 13:42:24

Quotation
回复: 4

荔枝派nano,480x272的RGB屏,用@达克罗德 的裸奔framebuffer代码 https://whycan.cn/t_1457.html。
在屏幕上画纯色,发现在某些特定颜色的时候,屏幕上显示的颜色里混杂了若干小黑点。

经过实验,当R/G/B中的任意一个为125~127,61~63之间的值时,显示的颜色会有黑点。猜测在31、15……附近也会有,但看不清楚了。
这是为什么?

下图对比了 RGB(0,124,0) 和 RGB(0,125,0)的情况。

rgb-compare.jpg

#176 Re: 全志 V3S/F1C100s/X3 » 请教个问题,V3S的spi flash选型。 » 2019-03-20 13:16:41

是128Mbit x1,不是128Mx1 bit,不是把两个数值乘起来的意思。
x1/x2/x4指的是SPI传输方式,有几条数据线,对应的速率不同。目前最多就到x4吧。

#177 Re: 全志 V3S/F1C100s/X3 » hi 请教一个lichee nano的问题 » 2019-03-18 22:55:34

串口在哪个pin看datasheet https://whycan.cn/files/members/3/F1C100s_Datasheet_V1_0.pdf。
你用的哪个固件?一般都会在串口输出点内容吧,去看代码里串口用的是哪个。
一般用uart0,不确定的话,把uart0的几种mapping都试一下就知道了:D。

#178 Re: 全志 V3S/F1C100s/X3 » F1C100s支持MCU接口液晶屏吗? » 2019-03-18 17:44:14

按晕哥的提示,参考了 彩虹派V3s开发板原理图A10 LCD 调试手册 这两份资料,画了块RGB屏转 i80屏的转接板。等打样回来慢慢调~
(图上丝印1脚和常用的线序是反的)

i80lcd-bridge-v1_0.png

#179 Re: 全志 V3S/F1C100s/X3 » 本站网友 @rainbow-pi 出品的高颜值开源 V3s 开发板 --- 彩虹派 » 2019-03-18 00:46:55

似乎 HPOUTR/HPOUTL 耳机输出到功放的接法有误。
耳机输出接口是双声道、单端音频输出。板子上当成了差分信号接到单声道功放,播放出来的声音应该会听起来不正常。
要么接双声道功放;要么把双声道接两个电阻转成单声道信号,再接功放。

没试过哈,只是根据原理图看的。彩虹派的同学可以验证一下。

#180 Re: 全志 V3S/F1C100s/X3 » F1C100s支持MCU接口液晶屏吗? » 2019-03-18 00:27:49

晕哥 说:

看下彩虹派的 V3s 开发板原理图,

他就是用 I80 的LCD

https://whycan.cn/t_1900.html

谢谢,明白了!做个板子试一下。

按照彩虹派的接法,SoC引脚到MCU屏的接法如下:
LCD_CLK  --  33Ω电阻  --  WR
LCD_DE  --  RS
LCD_HSYNC  --  RD

#181 Re: 全志 V3S/F1C100s/X3 » F1C100s支持MCU接口液晶屏吗? » 2019-03-17 23:25:13

引脚如何接呢?WR/RD对应于RGB屏的哪个引脚?

#182 全志 V3S/F1C100s/X3 » F1C100s支持MCU接口液晶屏吗? » 2019-03-17 18:07:56

Quotation
回复: 16

看到荔枝派Nano的LCD接口是RGB接口的。F1C100s手册里说TCON支持也MCU(i8080)接口,但是引脚只有适合RGB接口的HSYNC/VSYNC/DE,没有MCU屏的RD/WR。所以MCU接口的屏要怎么接呢?
似乎小尺寸的屏RGB接口的不多。

#183 Re: 全志 V3S/F1C100s/X3 » 支持MIPI摄像头的最便宜的是哪款芯片? » 2019-03-17 11:49:48

mikewen 说:

什么是 ISP ?  是 JPEG 压缩吗?  OV5647摄像头 带ISP 吗?

OV5647带了一部分ISP功能,自动曝光、自动白平衡是有的。输出格式只有原始的Bayer RGB一种,一般要自己再处理成普通的RGB/YUV图像。

#184 Re: 全志 V3S/F1C100s/X3 » 支持MIPI摄像头的最便宜的是哪款芯片? » 2019-03-17 11:43:14

mikewen 说:

什么是 ISP ?  是 JPEG 压缩吗?  OV5647摄像头 带ISP 吗?

大致是对光学传感器采集的原始信号做处理,实现像素格式转换、自动曝光、白平衡、伽马校正等等这些功能,还有降噪、增强等高级功能。如果摄像头带了ISP,主控芯片就直接取到可用的图像数据了。否则,摄像头就只是个原始的信号采集装置,主控要负责一大堆处理。

#185 Re: 全志 V3S/F1C100s/X3 » 支持MIPI摄像头的最便宜的是哪款芯片? » 2019-03-17 00:41:40

唉,还不光是通讯接口的问题。高分辨率的摄像头好像一般不带ISP,要求平台带ISP。低端摄像头反而自带ISP,对平台的要求低。看起来得用V3s/S3L了。

以前用过OV5640摄像头,是5MP、带ISP、带DVP,主控是简单了,但是摄像头本身贵了很多。

#186 全志 V3S/F1C100s/X3 » 支持MIPI摄像头的最便宜的是哪款芯片? » 2019-03-17 00:32:00

Quotation
回复: 8

5MP以上的摄像头基本都是MIPI接口了,全志有没有哪款芯片支持MIPI,而且便宜呢?
V3/S3系列是可以,不过价格跟C100s比起来,还是贵了很多。产品对价格比较敏感,希望能用刚刚好够用的便宜芯片。

#187 Re: 全志 V3S/F1C100s/X3 » F1C100s ADC使用一坑 » 2019-03-13 22:17:11

ZSB 说:

@Quotation 你好!我之前是用KEYADC,但是由于精度不够,现在想用音频ADC,想请教两个问题。
1、请问下音频ADC的参考电压怎么设置?我一直没找到那个寄存器,还是说参考电压是直接给某个引脚呢。
2、音频ADC输入检测是分正负的吧,相当于我做ADC检测的时候要把电压分压为正常的一半吗?

1. 参见这篇 https://whycan.cn/t_1727.html ,由AVCC电压决定的。
2. 需不需要分压看输入电压范围,范围也由AVCC决定。

#188 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-12 13:28:09

山无棱 说:
Quotation 说:

懂了,谢谢各位!不用很高级的屏幕,RGB666够了。

坐等大神把 C100 的 DVP 摄像头调通。

DVP摄像头已经在XBoot上调通了。不过我只做了我目前需要的功能,代码不通用。所以先不分享了。

#189 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-12 09:46:11

懂了,谢谢各位!不用很高级的屏幕,RGB666够了。

#190 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-12 09:08:11

微凉VeiLiang 说:

F1C100S接口不冲突,低两位才和摄像头共用引脚,不像v3s

从datasheet上看这几位都是和CSI冲突的,LCD的这几位实际用不到吗?

Screen-Shot-2019-03-12-at-08_57_54.png

#191 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-11 17:12:21

dgtg 说:

F1C100s也可以csi摄像头+RGB666输出的啊,看到过的

那有可能是SPI屏吧,带宽受限,做不到高刷新率。

#192 Re: 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-11 17:09:51

晕哥 说:

BGA的S3可以:   https://whycan.cn/t_2227.html

不错,S3很强悍啊。唯一的障碍是BGA封装,还没画过更没焊过BGA呢……

#193 全志 V3S/F1C100s/X3 » 哪款芯片能同时接摄像头和LCD? » 2019-03-11 11:10:50

Quotation
回复: 25

我想做个能实时采集视频并显示的东西,全志有什么芯片合适?最好是像F1C100s这样集成DRAM的。F1C100s的CSI和LCD复用了一些引脚,没法同时使用。

#194 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » 接喇叭的音频芯片用哪个好? » 2019-03-11 00:12:27

达克罗德 说:

ns4168我也用过,电路极简单,不过貌似不便宜。想便宜就PT8211+8002。我拆过火火兔都用的8002

没错,8002才1毛多,声音够好了。

#195 Re: Cortex M0/M3/M4/M7 » 开源小小草科技的基于STM32H7的小掌机,PCB和源码都有哦 » 2019-03-08 09:28:03

赞啊!有时间我也要做一个。
STM32H7好贵啊,同样是400mHz,可以去隔壁看看全志F1C100s,10块钱多一点还自带32M内存。:D

#196 Re: 全志 V3S/F1C100s/X3 » 刚刚收到逻辑分析仪,挂V3s 上抓一下 SPI 数据包 » 2019-01-30 21:11:29

你用的sunxi-fel是哪里的代码?从代码里看,似乎没有对大于24bit的地址做特殊处理。

#197 全志 V3S/F1C100s/X3 » SPI Flash不能写入问题解决 » 2019-01-30 11:09:10

Quotation
回复: 2

F1C100s,XBoot下调用block和spi-flash驱动操作SPI Flash,能读,不能擦除不能写。

断断续续调了几天终于调通了,问题出在Flash CS时序。XBoot spi-flash驱动里的CS时序不满足我用的Flash的要求。
我用的Puya普冉的Flash(很便宜),数据手册里特意说了,某些操作必须在字节边界处置CS为高,这是出于数据保护的目的,检查命令长度,如果长度错了就不执行命令。

For the following instructions: WREN, WRDI, WRSR, PE, SE, BE32K, BE, CE, PP, DPP, QPP, DP, ERSCUR, PRSCUR, SUSPEND, RESUME, RSTEN, RST, the CS# must go high exactly at the byte boundary; otherwise, the instruction will be rejected and not executed.

也就是说SPI在发送完这几个命令和数据后,需要马上拉高CS。但XBoot里的Flash驱动是按照别的Flash写的,时序不满足这个要求。因此在spi-flash.c加入一些spi_device_select()和spi_device_deselect(),就能够擦除写入了!代码改动如下。

static void spi_flash_sector_erase(struct spi_device_t * dev, u64_t addr)
{
	u8_t tx[4];

	spi_device_select(dev);
	spi_flash_write_enable(dev);
	spi_device_deselect(dev);

	tx[0] = OPCODE_SE;
	tx[1] = (u8_t)(addr >> 16);
	tx[2] = (u8_t)(addr >> 8);
	tx[3] = (u8_t)(addr >> 0);
	spi_device_select(dev);
	spi_device_write_then_read(dev, tx, 4, 0, 0);
	spi_device_deselect(dev);

	spi_device_select(dev);
	spi_flash_wait_for_busy(dev);
	spi_device_deselect(dev);
}

static void spi_flash_sector_erase_4k(struct spi_device_t * dev, u64_t addr)
{
	u8_t tx[4];

	spi_device_select(dev);
	spi_flash_write_enable(dev);
	spi_device_deselect(dev);

	tx[0] = OPCODE_BE_4K;
	tx[1] = (u8_t)(addr >> 16);
	tx[2] = (u8_t)(addr >> 8);
	tx[3] = (u8_t)(addr >> 0);
	spi_device_select(dev);
	spi_device_write_then_read(dev, tx, 4, 0, 0);
	spi_device_deselect(dev);

	spi_device_select(dev);
	spi_flash_wait_for_busy(dev);
	spi_device_deselect(dev);
}

static void spi_flash_write_one_page(struct spi_device_t * dev, u64_t addr, u8_t * buf)
{
	u8_t tx[4];

	spi_device_select(dev);
	spi_flash_write_enable(dev);
	spi_device_deselect(dev);

	tx[0] = OPCODE_PP;
	tx[1] = (u8_t)(addr >> 16);
	tx[2] = (u8_t)(addr >> 8);
	tx[3] = (u8_t)(addr >> 0);
	spi_device_select(dev);
	spi_device_write_then_read(dev, tx, 4, 0, 0);
	spi_device_write_then_read(dev, buf, 256, 0, 0);
	spi_device_deselect(dev);

	spi_device_select(dev);
	spi_flash_wait_for_busy(dev);
	spi_device_deselect(dev);
}

按理说,可以用SPI硬件自动控制CS。sunxi-tools里就是这样做的,没有操作CS的代码,也能正确写入。但我还没调出来,目前仍然用软件控制CS。

#198 Re: 全志 V3S/F1C100s/X3 » XBOOT尺寸裁剪(170kB不带图形系统) » 2019-01-29 10:40:14

motoedy 说:

大佬能分享下你裁剪后的工程么?

这是我的工程,删了一些不用的文件和第三方库。如果你需要,再对照原始的工程添加回来。
编译出来的bin文件133kB。
xboot-size-opt.zip

#199 Re: 全志 V3S/F1C100s/X3 » 正常运行状态下,有没有办法切换到FEL模式? » 2019-01-19 16:15:51

basicdev 说:

就是说USB可以识别FEL设备,但是不能操作flash?
是不是spi外设时钟等没有配置好?

是,sunxi-fel writel/readl等命令都可以用,flash相关的命令不可用。
猜测是某些寄存器需要重置为初始状态,FEL不会做太多检查、初始化的动作。如果代码里已经初始化了SPI,可能需要恢复原状。

#200 Re: 全志 V3S/F1C100s/X3 » 正常运行状态下,有没有办法切换到FEL模式? » 2019-01-19 16:04:39

阶段性成果:目前能够在正常运行状态切换到FEL了,可以读写内存什么的。但是还无法通过sunxi-fel操作SPI Flash。

// xboot代码里把IRQ MASK全置1了,至少需要把USB-OTG(bit 26)置0才能进FEL。
write32(0x01C20400 + 0x30, 0);
// Control Register bit 13,使用高地址向量表
arm32_write_p15_c1(arm32_read_p15_c1() | (1 << 13));
// 跳转到FEL
asm("BX %0" : : "r"(0xFFFF0020));

页脚

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