首先根据LinjieGuo的帖子https://whycan.com/t_7659.html做移植.
1,从本贴https://whycan.com/t_3958.html下载[allwinner_tina_prj_v1.zip]
2.解压 [allwinner_tina_prj_v1.zip] ,到 rt-thread-gitee_master\bsp目录下。
3.修改main.c去掉uart2部分,注释掉//Sys_Servs_Init();//Services
4.打开ENV,转换目录到rt-thread-gitee_master\bsp目录下输入menuconfig。去掉SDIO支持,我不用SD卡.
5编译RTT,输入scons。得到未经修饰的rtthread.bin
6执行脚本文件,[flashtospi.bat],这个脚本用于修饰rtthread.bin,增加魔术头,并下载bin文件到flash中。
最近编辑记录 nice (2022-06-15 16:33:08)
离线
接入uart1接口,上电显示:
\ | /
- RT - Thread Operating System
/ | \ 4.1.1 build Jun 15 2022 09:23:43
2006 - 2022 Copyright by RT-Thread team
[32m[I/SFUD] Find a Winbond flash chip. Size is 8388608 bytes.[0m
[32m[I/SFUD] gd25qxx flash device is initialize success.[0m
[32m[I/SFUD] Probe SPI flash gd25qxx by SPI device spi00 success.[0m
Start...
periph_get_pll_clk:600000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000
[Thread]GUIThread Created.
msh />
离线
1,更改LV的像素设置
2.更改drv_fb.c里的像素时钟设置
关于 :pixel_clock_hz
static void f1c100s_tcon_set_mode(lcd_cfg_Struct * pdat)
val = f1c100s_tcon_clk_get_rate() / pdat->pixel_clock_hz;
write32((uint32_t)&tcon->tcon0_dclk, (0xf << 28) | (val << 0));
struct f1c100s_tcon_reg_t * tcon = (struct f1c100s_tcon_reg_t *)F1C100S_TCON_BASE;
#define F1C100S_TCON_BASE (0x01c0c000)
离线
Allwinner_F1C200s_User_Manual_V1.1.pdf
最近编辑记录 nice (2022-06-16 16:32:43)
离线
uint32_t tcon0_dclk; /* 0x44 */
根据: write32((uint32_t)&tcon->tcon0_dclk, (0xf << 28) | (val << 0));
lclk_en:4'hf
DCLKDIV: dot clock divider
Tdclk = Tsclk * DCLKDIV
Note:
1.if dclk1&dclk2 used,5<DCLKDIV <96
2.if dclk only,DCLKDIV >=4 || DCLKDIV=2
f1c100s_tcon_clk_get_rate()
-> video_get_pll_clk()
-> PLL_VIDEO_CTRL_REG 0x0010 PLL_VIDEO Control Register 查看倍频情况.
这边是获取了,查一下,设置部分找到:
void rt_hw_board_init(void)
{
video_set_pll_clk(198000000);
最近编辑记录 nice (2022-06-16 17:03:22)
离线
感谢:达克罗德和staunchheart
请参考https://whycan.cn/t_2135.html
同时参考https://whycan.cn/t_3611.html
RTT下sys-clock.c
write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL,0x81004103);// 0x81004107);//
离线
找到频的dclk,对应pixel_clock_hz改之/
void sys_clock_init(void)
->write32(F1C100S_CCU_BASE + CCU_PLL_VIDEO_CTRL, 0x81003b03);
void rt_hw_board_init(void)
->video_set_pll_clk(360000000);//(198000000);
时钟输出=24000000*(0x3b+1)/(0x03+1)=360Mhz
drv_fb.c
->lcd_cfg_Struct lcd_cfg={
.pixel_clock_hz=60000000, //9210200,
最近编辑记录 nice (2022-06-17 10:29:25)
离线
.pixel_clock_hz=52M设置方法:
52*6=312M
时钟24*x/y=312M ->x/y=13
若y=4,x=52, -> 0x03 ,0x33 ->24000000*(0x33+1)/(0x03+1) ->0x81003303
离线