老早就开始调F1C的TVD了。当时查找了好多资料,发现资料比较少,查找到csdn的一片文章有写A10/A20的TVD驱动代码介绍。
然后赶紧copy下来,编写了驱动的大概。然后发现并不能用,中断都能不能进入(经常调驱动,个人认为,一个外设,如果调到能够进入中断,意味着已经成功一半了,哈哈)
后来看了下melis的tvd.drv(这个是melis里面编译成动态库的格式,需要通过melis的专门机制去加载的),里面的地址和A20完全不一样。于是乎就自己一个一个对代码的对应数值。整理了一个寄存器对照表,然后一顿操作,发现能够进入驱动了,嘿嘿
赶紧把数据显示一下,有些东西显示,但是画面不对,还有就是颜色也不对,离正常的画面还是差很远
后面又隔了很长一段时间,直到有一天查找资料查找到R40i竟然有对TVD寄存器进行介绍,就是下面这个
Allwinner_R40_User_Manual_V1_0.pdf
然后仔细看了一下里面的寄存器,对照一下之前的寄存器对照表,发现R40和A20还有F1C100s都不一样。。。。。没辙,只能自己摸索了,还是继续参考tvd.drv里面的汇编进行对应配置的修改,同时也参考github网上的sunxi linux资料。
经过几天晚上的比对修改,画面终于显示了,还移植了个YUV420转RGB的代码。整了好一会颜色。出来的效果如下(因为顺手的就是这个牌子,并不是为了暗示什么哈,,,逃走()
目前还有些显示的问题,就是显示有锯齿,不知道是不是因为隔行和逐行配置的问题。后面也没有空再研究了,发出来给大伙探讨探讨,解决了可以发在坑网里面,又可以水一贴
附上当时整理的对应列表
F1C100S 和A20 TVD寄存器对应关系
0x0F08,0x0008
0x0F0C,0x000C
0x0F10,0x0010
0x0F14,0x0014
0x0F18,0x0030
0x0F1C,0x001C
0x0F24,0x0024
0x0F28,0x0028
0x0F2C,0x002C
0x0F44,0x0044
0x0F4C,0x004c
0x0F54,0x0054 [不确定]
0x0F6C,0x006C
0x0F74,0x0074
0x0F80,0x0080
0x0F84,0x00840x000C,0x0018
0x0014,0x00340x008c,0x0134
0x0088,0x0130
0x0E2C,0x52C
0x0094,0x0140
0x009c,0x01480x0080 //y 通道地址?
0x0084 //U 通道地址?
离线
致谢
xboot提供的xboot项目https://github.com/xboot/xboot
达克罗德 的裸机工程 F1C100S裸奔framebuffer+PWM+GPIO驱动
离线
厉害!支持
离线
你好。感谢您的发布,回复和分享。
离线
抱歉,我无法下载。你能把它放在你的github上吗?
离线
目前虽然用不上 先谢谢了 同时佩服微凉大侠的开源精神 BTW 声卡有调通没 ;-)
离线
厉害,佩服大佬的钻研精神,向大佬学习。。。我与大佬中间还差着一个晕哥的距离。
离线
厉害,佩服大佬的钻研精神,向大佬学习。。。我与大佬中间还差着一个晕哥的距离。
离线
结果不重要,感兴趣的是hack的过程和方法
离线
微凉大侠,研究太深入了,感觉全志的门快被你打开了
话说,usb主机驱动,有没有什么参考的好办法,真的只能看musb那个资料吗???
离线
抱歉,我无法下载。你能把它放在你的github上吗?
为什么下不了,应该积分够了吧
离线
微凉大侠,研究太深入了,感觉全志的门快被你打开了
话说,usb主机驱动,有没有什么参考的好办法,真的只能看musb那个资料吗???
usb主机之前调出来了,参考bsp linux。然后musb的手册作为辅助
离线
很好的东西,已经做了一个一摸一样的板子出来了,准备玩一下
技术狂,追求技术更高层,哈哈哈
离线
非常牛逼,都懂的问题有没有解决
离线
什么都不懂,围观一下
离线
各位大佬,cvbs是不是相当于ccd呀?
离线
各位大佬,cvbs是不是相当于ccd呀?
不是,cvbs是一种通讯标准,ccd是一种工艺。
早前的ccd摄像头一般直接输出cvbs信号,他们没有必然的联系。
离线
CVBS 是不是就是S端子啊
离线
离线
谢谢大佬分享,有cvbs摄像头介绍吗
离线
最近编辑记录 xjf (2021-04-30 11:01:57)
离线
我改了一下, 能在windows cygwin编译成功, 编译命令行:
CROSS_COMPILE="D:\work\2020-q4-major\bin\arm-none-eabi-" make
能在widora tiny200 r3 跑起来:F1C100S_TVD_noOS_widora_tiny200r3_20210604.7z
串口有输出信息
whycan晕哥
Boot to SPI mode
Start main while!
Start main while!
request_irq
tvd_bsp_init
tvd_config
tvd_set_fmt
tvd_irq_status_clear
tvd_irq_enable
tvd_capture_on
TVD_CLK_REG: 0x8000000a
BUS_CLK_RST1_REG: 0x00005210
BUS_CLK_GATE1_REG: 0x00005210
DRAM_CLK_GATE_REG: 0x05000008
PLL_VEDIO_CTRL_REG: 0x93006207
tvd reg[1c0b000]= 1
tvd reg[1c0b004]= 10000
tvd reg[1c0b008]= 1111001
tvd reg[1c0b00c]= 3714080
tvd reg[1c0b010]= 310080
tvd reg[1c0b014]=20000000
tvd reg[1c0b018]=2a098acb
tvd reg[1c0b01c]= 87002f
tvd reg[1c0b020]= 0
tvd reg[1c0b024]= 0
tvd reg[1c0b028]= 0
tvd reg[1c0b02c]= 0
tvd reg[1c0b030]= 0
tvd reg[1c0b034]= 0
tvd reg[1c0b038]= 0
tvd reg[1c0b03c]= 0
tvd reg[1c0b040]= 4000310
tvd reg[1c0b044]= 0
tvd reg[1c0b048]= 1
tvd reg[1c0b04c]= 0
tvd reg[1c0b050]= 0
tvd reg[1c0b054]= 100000
tvd reg[1c0b058]= 1000
tvd reg[1c0b05c]= 0
tvd reg[1c0b060]=2a098acb
tvd reg[1c0b064]=21e6efe3
tvd reg[1c0b068]=21f69446
tvd reg[1c0b06c]=21f07c1f
tvd reg[1c0b070]= 110
tvd reg[1c0b074]= 0
tvd reg[1c0b078]= 0
tvd reg[1c0b07c]= 0
tvd reg[1c0b080]=8014b1c4
tvd reg[1c0b084]=800e5dc4
tvd reg[1c0b088]= 4000001
tvd reg[1c0b08c]= 12002d0
tvd reg[1c0b090]= 2d0
tvd reg[1c0b094]= 0
tvd reg[1c0b098]= 0
tvd reg[1c0b09c]= 1000000
tvd reg[1c0b0a0]= 0
tvd reg[1c0b0a4]= 0
tvd reg[1c0b0a8]= 0
tvd reg[1c0b0ac]= 0
tvd reg[1c0b0b0]=ffffffff
tvd reg[1c0b0b4]=ffffffff
tvd reg[1c0b0b8]= 0
tvd reg[1c0b0bc]= 0
tvd reg[1c0b0c0]= 0
tvd reg[1c0b0c4]= 0
tvd reg[1c0b0c8]= 0
tvd reg[1c0b0cc]= 0
tvd reg[1c0b0d0]= 0
tvd reg[1c0b0d4]= 0
tvd reg[1c0b0d8]= 0
tvd reg[1c0b0dc]= 0
tvd reg[1c0b0e0]= 0
tvd reg[1c0b0e4]= 0
tvd reg[1c0b0e8]= 0
tvd reg[1c0b0ec]= 0
tvd reg[1c0b0f0]= 0
tvd reg[1c0b0f4]= 0
tvd reg[1c0b0f8]= 0
tvd reg[1c0b0fc]= 0
tvd reg[1c0be00]= 0
tvd reg[1c0be04]=8002aaa8
tvd reg[1c0be08]= 0
tvd reg[1c0be0c]= 5
tvd reg[1c0be10]= 0
tvd reg[1c0be14]= 0
tvd reg[1c0be18]= 0
tvd reg[1c0be1c]= 0
tvd reg[1c0be20]= 0
tvd reg[1c0be24]= 0
tvd reg[1c0be28]= 0
tvd reg[1c0be2c]= b0000
tvd reg[1c0be30]= e800e8
tvd reg[1c0be34]= 0
tvd reg[1c0be38]= 0
tvd reg[1c0be3c]= 0
tvd reg[1c0be40]= 40609
tvd reg[1c0be44]=1fa2b500
tvd reg[1c0be48]=2a098acb
tvd reg[1c0be4c]= 1f1f
tvd reg[1c0be50]= 126
tvd reg[1c0be54]= 0
tvd reg[1c0be58]= 0
tvd reg[1c0be5c]= 0
tvd reg[1c0be60]= 0
tvd reg[1c0be64]= 0
tvd reg[1c0be68]= 0
tvd reg[1c0be6c]= 0
tvd reg[1c0be70]= 0
tvd reg[1c0be74]= 0
tvd reg[1c0be78]= 0
tvd reg[1c0be7c]= 0
tvd reg[1c0be80]= 0
tvd reg[1c0be84]= 0
tvd reg[1c0be88]= 0
tvd reg[1c0be8c]= 0
tvd reg[1c0be90]= 0
tvd reg[1c0be94]= 0
tvd reg[1c0be98]= 0
tvd reg[1c0be9c]= 0
tvd reg[1c0bea0]= 0
tvd reg[1c0bea4]= 0
tvd reg[1c0bea8]= 0
tvd reg[1c0beac]= 0
tvd reg[1c0beb0]= 0
tvd reg[1c0beb4]= 0
tvd reg[1c0beb8]= 0
tvd reg[1c0bebc]= 0
tvd reg[1c0bec0]= 0
tvd reg[1c0bec4]= 0
tvd reg[1c0bec8]= 0
tvd reg[1c0becc]= 0
tvd reg[1c0bed0]= 0
tvd reg[1c0bed4]= 0
tvd reg[1c0bed8]= 0
tvd reg[1c0bedc]= 0
tvd reg[1c0bee0]= 0
tvd reg[1c0bee4]= 0
tvd reg[1c0bee8]= 0
tvd reg[1c0beec]= 0
tvd reg[1c0bef0]= 0
tvd reg[1c0bef4]= 0
tvd reg[1c0bef8]= 0
tvd reg[1c0befc]= 0
而且能正常进入中断
接不接CVBS(TVIN0)输入 都是这样显示:
但是LCD显示不正常,
离线
多谢大佬分享,向大佬学习
离线
离线
https://whycan.com/files/members/3907/QQ图片20210604220200.jpg
垃圾堆翻出一块解码板, 自带软件显示TV CVBS 正常
https://whycan.com/files/members/3907/QQ图片20210604220421.jpg
用楼主的代码显示这样了 😂😂😂😂😂😂😂
歪朵拉的板子设计TVD电路有异常,你将R30去掉,然后CVBS信号不要供地,应该就能看到图像了。如果共地,则完全是一个白屏。
离线
https://whycan.com/files/members/3907/QQ图片20210604220200.jpg
垃圾堆翻出一块解码板, 自带软件显示TV CVBS 正常
https://whycan.com/files/members/3907/QQ图片20210604220421.jpg
用楼主的代码显示这样了 😂😂😂😂😂😂😂
===
群主,你这个小播放器是啥牌子的,有链接不? 还可以设置视频输出格式。便宜的话淘宝买个用来测试。谢谢
离线
我用其他方案做的cvbs,收款码有锯齿,这个问题困扰到现在没解决.后来取巧用一个hdmi转换模块显示到lcd图像平滑了许多,没有锯齿了.
离线
离线
离线
最近在弄这个TVD,进了中断之后,数据一直不刷新,蒙了,先看看楼主的代码
离线
准备搞一下视频监控
离线
是否可以将 CVBS TVIN ADC 用作标准高速 ADC?最大采样频率可能是多少?
离线
正想搞F1C200S的TVD,多谢大佬分享,向大佬学习!
离线
请问CVBS TVD输出到LCD的图像能不能进行缩小或者放大?
离线
请问CVBS TVD输出到LCD的图像能不能进行缩小或者放大?
硬件de支持这个功能
离线
有个地方请教一下,我查看了示例代码F1C100S_TVD_Nonos
其中
void RefleshLcdWithTVD(unsigned char *ydat,unsigned char * cbcr,int w,int h)
函数存在4个参数
但是实际使用的只有3个↓
RefleshLcdWithTVD((void*)0,480,272);
我觉得这个是不大不小的问题。
离线
感谢分享,再综合xboot的代码,希望能把F1c的TVD驱动搞定
离线
感谢分享,再综合xboot的代码,希望能把F1c的TVD驱动搞定
站在大佬的肩膀上,一天就调好TVD了,再次感谢。最后上图:
离线
多谢大佬分享,向大佬学习。可以两路输入同时检测吗
离线
Jimmy86007 说:感谢分享,再综合xboot的代码,希望能把F1c的TVD驱动搞定
站在大佬的肩膀上,一天就调好TVD了,再次感谢。最后上图:https://whycan.com/files/members/12748/1696838084736.jpg
你好,可以请教几个问题吗?
离线
@微凉VeiLiang
I'm sorry if my question is basic! But how can I setup my vscode to build and compile your source code?
And in general, how can I write a program like yours and how to use other prepheral drivers? I'm new in writting bare metal for F1C100,...
and what about RT-Thread?
is there any good post in whycan forum that explains these simple and good?
Thanks very much
离线
@alizx
参考
https://whycan.com/t_5755.html
最近编辑记录 微凉VeiLiang (2023-11-12 21:22:17)
离线
aHd的可以解码吗
离线
荔枝派nano可以用吗 使用的也是F1C100S 原理图上有tvin接口 板子上没发现
离线
楼主厉害。感慨AW的资料还是要靠东拼西凑,遇到碰巧接近的IP和相对完整的资料才能搞下去。
离线