老早就开始调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那个资料吗???
离线
mcd12 wrote:
抱歉,我无法下载。你能把它放在你的github上吗?
为什么下不了,应该积分够了吧
离线
myxiaonia wrote:
微凉大侠,研究太深入了,感觉全志的门快被你打开了
话说,usb主机驱动,有没有什么参考的好办法,真的只能看musb那个资料吗???
usb主机之前调出来了,参考bsp linux。然后musb的手册作为辅助
离线
很好的东西,已经做了一个一摸一样的板子出来了,准备玩一下
技术狂,追求技术更高层,哈哈哈
离线
非常牛逼,都懂的问题有没有解决
离线
什么都不懂,围观一下
离线
各位大佬,cvbs是不是相当于ccd呀?
离线
道胜天下 wrote:
各位大佬,cvbs是不是相当于ccd呀?
不是,cvbs是一种通讯标准,ccd是一种工艺。
早前的ccd摄像头一般直接输出cvbs信号,他们没有必然的联系。
离线
CVBS 是不是就是S端子啊
离线
dycbaba wrote:
CVBS 是不是就是S端子啊
不是, CVBS一般是用AV端子: https://baike.baidu.com/item/AV端子
离线
谢谢大佬分享,有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显示不正常,
离线
多谢大佬分享,向大佬学习
离线
离线
哇酷小二 wrote:
/files/members/3907/QQ图片20210604220200.jpg
垃圾堆翻出一块解码板, 自带软件显示TV CVBS 正常
/files/members/3907/QQ图片20210604220421.jpg
用楼主的代码显示这样了 😂😂😂😂😂😂😂
歪朵拉的板子设计TVD电路有异常,你将R30去掉,然后CVBS信号不要供地,应该就能看到图像了。如果共地,则完全是一个白屏。
离线
哇酷小二 wrote:
/files/members/3907/QQ图片20210604220200.jpg
垃圾堆翻出一块解码板, 自带软件显示TV CVBS 正常
/files/members/3907/QQ图片20210604220421.jpg
用楼主的代码显示这样了 😂😂😂😂😂😂😂
===
群主,你这个小播放器是啥牌子的,有链接不? 还可以设置视频输出格式。便宜的话淘宝买个用来测试。谢谢
离线
我用其他方案做的cvbs,收款码有锯齿,这个问题困扰到现在没解决.后来取巧用一个hdmi转换模块显示到lcd图像平滑了许多,没有锯齿了.
离线
离线
离线
最近在弄这个TVD,进了中断之后,数据一直不刷新,蒙了,先看看楼主的代码
离线
准备搞一下视频监控
离线
是否可以将 CVBS TVIN ADC 用作标准高速 ADC?最大采样频率可能是多少?
离线
正想搞F1C200S的TVD,多谢大佬分享,向大佬学习!
离线
请问CVBS TVD输出到LCD的图像能不能进行缩小或者放大?
离线
rayandy wrote:
请问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驱动搞定
离线
Jimmy86007 wrote:
感谢分享,再综合xboot的代码,希望能把F1c的TVD驱动搞定
站在大佬的肩膀上,一天就调好TVD了,再次感谢。最后上图:
离线
多谢大佬分享,向大佬学习。可以两路输入同时检测吗
离线
Jimmy86007 wrote:
Jimmy86007 wrote:
感谢分享,再综合xboot的代码,希望能把F1c的TVD驱动搞定
站在大佬的肩膀上,一天就调好TVD了,再次感谢。最后上图:/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和相对完整的资料才能搞下去。
离线
参考大佬的项目: https://github.com/nminaylov/F1C100s_projects
使用一个模拟车载摄像头,输入LCD显示完全没显示,只看到寄存器值会变化;
然后用lechee-nano跑tv_out_test程序,产生NTSC信号,接入另外一块lctech pi, LCD显示花屏。
看网上资料,说要产生27MHz时钟, 还有输出是YUV422还是420也不能确定。
离线
有谁知道用T113怎么做吗?
离线