搜索
bottom↓
回复: 12

求助:STM32F103VE+RA8875+AT070TN83显示异常

[复制链接]

出0入0汤圆

发表于 2012-2-15 20:46:00 | 显示全部楼层 |阅读模式
我根据网站内的资料做了一块RA8875的显示板,但显示不正常,如图,用示波器看DE信号和RA8875的资料不一样,根据手册REG[15h] Horizontal Non-Display Period Fine Tuning Option Register (HNDFTR),bit7不管设为0还是1,DE信号极性不变。波形也不对。请大家看看怎么设置啊。附RA8875初始化语句。
        WriteCommand(0x88);        //SYS_CLK = FIN*(PLLDIVN[4:0] +1)/((PLLDIVM+1)*(2^PLLDIVK[2:0]))
        WriteData(0x14);        //PLLDIVN[4:0] = 20 FIN = 16MHz  PLLDIVM =0   0x14
        DelayMs(1);
       
        WriteCommand(0x89);
        WriteData(0x02);        //PLLDIVK[2:0] =2
        DelayMs(10);
       
        WriteCommand(0x10);  //SYSR   u8[4:3]=00 256 color  u8[2:1]=  00 8u8 MPU interface
        WriteData(0x0F);   // if 8u8 MCU interface   and 65k color display----- 0x0c
        DelayMs(1);
       
        WriteCommand(0x04);  //PCLK inverse
        WriteData(0x81);
        DelayMs(1);

       
        //Horizontal set
        WriteCommand(0x14); //HDWR//Horizontal Display Width Setting Bit[6:0]                     
        WriteData(0x63);//Horizontal display width(pixels) = (HDWR + 1)*8                     
        WriteCommand(0x15);//Horizontal Non-Display Period Fine Tuning Option Register (HNDFTR)   
        WriteData(0x00);//Horizontal Non-Display Period Fine Tuning(HNDFT) [3:0]               
        WriteCommand(0x16); //HNDR//Horizontal Non-Display Period Bit[4:0]                        
        WriteData(0x03);//Horizontal Non-Display Period (pixels) = (HNDR + 1)*8               
        WriteCommand(0x17); //HSTR//HSYNC Start Position[4:0]                                      
        WriteData(0x04);//HSYNC Start Position(PCLK) = (HSTR + 1)*8                           
        WriteCommand(0x18); //HPWR//HSYNC Polarity ,The period width of HSYNC.                     
        WriteData(0x8F);//HSYNC Width [4:0]   HSYNC Pulse width(PCLK) = (HPWR + 1)*8   
        DelayMs(1);
        //Vertical set                             
        WriteCommand(0x19); //VDHR0 //Vertical Display Height Bit [7:0]                           
        WriteData(0xdf);//Vertical pixels = VDHR + 1                                          
        WriteCommand(0x1a); //VDHR1 //Vertical Display Height Bit [8]                              
        WriteData(0x01);//Vertical pixels = VDHR + 1                                          
        WriteCommand(0x1b); //VNDR0 //Vertical Non-Display Period Bit [7:0]                        
        WriteData(0x03);//Vertical Non-Display area = (VNDR + 1)                              
        WriteCommand(0x1c); //VNDR1 //Vertical Non-Display Period Bit [8]                          
        WriteData(0x00);//Vertical Non-Display area = (VNDR + 1)                              
        WriteCommand(0x1d); //VSTR0 //VSYNC Start Position[7:0]                                    
        WriteData(0x03);//VSYNC Start Position(PCLK) = (VSTR + 1)                              
        WriteCommand(0x1e); //VSTR1 //VSYNC Start Position[8]                                      
        WriteData(0x00);//VSYNC Start Position(PCLK) = (VSTR + 1)                              
        WriteCommand(0x1f); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0]                        
        WriteData(0x01);//VSYNC Pulse Width(PCLK) = (VPWR + 1)                                 
        DelayMs(1);

出0入0汤圆

 楼主| 发表于 2012-2-15 20:47:16 | 显示全部楼层
回复【楼主位】physh
-----------------------------------------------------------------------

图忘了传了。

(原文件名:DSC_0029_01.JPG)


(原文件名:DSC_0030.JPG)

出0入0汤圆

 楼主| 发表于 2012-2-16 17:33:08 | 显示全部楼层
没人顶,我自己顶,发现一个好奇怪的现象,
(原文件名:1_01.JPG)

根据LCD时序,HPW也就是行同步的脉宽设为5,行频变为115KHz,可是脉宽的宽度却宽了,占了1/3整个波形(根据示波器图形,我自己估算的)。设为B反而变窄了,占有1/10吧,行频变为31KHz。

出0入0汤圆

 楼主| 发表于 2012-2-18 18:05:47 | 显示全部楼层
总算解决了,显示还行吧。

出0入0汤圆

发表于 2012-2-19 18:02:01 | 显示全部楼层
怎么解决的不想告诉我们吗?

出0入0汤圆

发表于 2012-4-14 09:11:23 | 显示全部楼层
能分享解决的方法吗?

出0入0汤圆

发表于 2012-11-12 09:23:57 | 显示全部楼层
LZ这样的情况一般都是时序的问题,就是说时序没有配置对,

出0入0汤圆

发表于 2012-11-27 23:12:45 | 显示全部楼层
这会儿我也遇到同样的问题了,就是DE信号极性不对,也不知道到那里去设置的!所以不一直没有显示正确啊!驱动时序不对!

出0入0汤圆

 楼主| 发表于 2013-1-29 14:00:35 | 显示全部楼层
TigerRay 发表于 2012-11-27 23:12
这会儿我也遇到同样的问题了,就是DE信号极性不对,也不知道到那里去设置的!所以不一直没有显示正确啊!驱动时 ...

芯片有问题,程序不用改,换块芯片(买了五块,有两块有这样的问题。)就好了。现在又遇到了使用RA8875外挂的字库显示字符串,老是只显示第一个字符,后面的显示不出来,不知道什么原因。网上找不到相关的资料,有人也提出这个问题,没人回答。SYS_CLK设为 60MHZ以上有刺耳的哮叫声,我现在只能设为大约50MHZ吧。用这个芯片真头大。

出0入0汤圆

发表于 2013-2-16 15:04:04 | 显示全部楼层
physh 发表于 2013-1-29 14:00
芯片有问题,程序不用改,换块芯片(买了五块,有两块有这样的问题。)就好了。现在又遇到了使用RA8875外 ...

现在我也是基本上搞到一半,又放到那里了,回家过完年在说了!这东西哎!不好说啊,有时候想想还真不如自己用CPLD写啊!就是功能没有那么多了!

出0入31汤圆

发表于 2013-9-4 20:29:08 | 显示全部楼层
兄弟,把初始化的代码共享一下吧,

出0入31汤圆

发表于 2013-9-7 20:26:50 | 显示全部楼层
兄弟,这个时序貌似有些问题啊,与AT070TN83不一致啊

出0入0汤圆

 楼主| 发表于 2013-11-9 19:13:22 | 显示全部楼层
用在AT070TN83正常,现在又用在stm32f407板上了。自己做的板。
void Init_RA875(void)
{
                lcd_rst();
                WriteCommand(0x88);        //SYS_CLK = FIN*(PLLDIVN[4:0] +1)/((PLLDIVM+1)*(2^PLLDIVK[2:0])); SYS_CLK=25MHz*(7+1)/(1*(2^3)=25MHz.
                WriteData(0x07);        //PLLDIVN[4:0] = 20 FIN = 25MHz  PLLDIVM =0   0x10
                delay_ms(1);
       
                WriteCommand(0x89);
                WriteData(0x03);        //PLLDIVK[2:0] =2
                delay_ms(10);
       
                WriteCommand(0x10);  //SYSR   u8[4:3]=00 256 color  u8[2:1]=  00 8u8 MPU interface
                WriteData(0x0F);   // if 8u8 MCU interface   and 65k color display----- 0x0c
                delay_ms(1);
                   
                WriteCommand(0x04);  //PCLK inverse
                WriteData(0x81);
                delay_ms(1);
               
                //Horizontal set
                WriteCommand(0x14); //HDWR//Horizontal Display Width Setting Bit[6:0]                     
                WriteData(0x63);//Horizontal display width(pixels) = (HDWR + 1)*8                     
                WriteCommand(0x15);//Horizontal Non-Display Period Fine Tuning Option Register (HNDFTR)   
                WriteData(0x00);//Horizontal Non-Display Period Fine Tuning(HNDFT) [3:0]               
                WriteCommand(0x16); //HNDR//Horizontal Non-Display Period Bit[4:0]                        
                WriteData(0x03);//Horizontal Non-Display Period (pixels) = (HNDR + 1)*8               
                WriteCommand(0x17); //HSTR//HSYNC Start Position[4:0]                                      
                WriteData(0x03);//HSYNC Start Position(PCLK) = (HSTR + 1)*8                           
                WriteCommand(0x18); //HPWR//HSYNC Polarity ,The period width of HSYNC.                     
                WriteData(0x0B);//HSYNC Width [4:0]   HSYNC Pulse width(PCLK) = (HPWR + 1)*8   
                delay_ms(1);
                //Vertical set                             
                WriteCommand(0x19); //VDHR0 //Vertical Display Height Bit [7:0]                           
                WriteData(0xdf);//Vertical pixels = VDHR + 1                                          
                WriteCommand(0x1a); //VDHR1 //Vertical Display Height Bit [8]                              
                WriteData(0x01);//Vertical pixels = VDHR + 1                                          
                WriteCommand(0x1b); //VNDR0 //Vertical Non-Display Period Bit [7:0]                        
                WriteData(0x1f);//Vertical Non-Display area = (VNDR + 1)                              
                WriteCommand(0x1c); //VNDR1 //Vertical Non-Display Period Bit [8]                          
                WriteData(0x00);//Vertical Non-Display area = (VNDR + 1)                              
                WriteCommand(0x1d); //VSTR0 //VSYNC Start Position[7:0]                                    
                WriteData(0x16);//VSYNC Start Position(PCLK) = (VSTR + 1)                              
                WriteCommand(0x1e); //VSTR1 //VSYNC Start Position[8]                                      
                WriteData(0x00);//VSYNC Start Position(PCLK) = (VSTR + 1)                              
                WriteCommand(0x1f); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0]                        
                WriteData(0x01);//VSYNC Pulse Width(PCLK) = (VPWR + 1)                                 
                delay_ms(1);

                //Active window  set
                //setting active window X
                WriteCommand(0x30); //Horizontal Start Point 0 of Active Window (HSAW0)
                WriteData(0x00); //Horizontal Start Point of Active Window [7:0]
                WriteCommand(0x31); //Horizontal Start Point 1 of Active Window (HSAW1)          
                WriteData(0x00); //Horizontal Start Point of Active Window [9:8]
                WriteCommand(0x34); //Horizontal End Point 0 of Active Window (HEAW0)
                WriteData(0x1F); //Horizontal End Point of Active Window [7:0]
                WriteCommand(0x35); //Horizontal End Point 1 of Active Window (HEAW1)          
                WriteData(0x03); //Horizontal End Point of Active Window [9:8]
                delay_ms(1);
               
                //setting active window Y
                WriteCommand(0x32); //Vertical Start Point 0 of Active Window (VSAW0)
                WriteData(0x00); //Vertical Start Point of Active Window [7:0]
                WriteCommand(0x33); //Vertical Start Point 1 of Active Window (VSAW1)          
                WriteData(0x00); //Vertical Start Point of Active Window [8]
                WriteCommand(0x36); //Vertical End Point of Active Window 0 (VEAW0)
                WriteData(0xdf); //Vertical End Point of Active Window [7:0]
                WriteCommand(0x37); //Vertical End Point of Active Window 1 (VEAW1)          
                WriteData(0x01); //Vertical End Point of Active Window [8]
                delay_ms(1);
               
                WriteCommand(0x70);                //set TP sample time  & ADC clock
                WriteData(0xB2);//ADC取样为4096个系统周期,可唤醒,系统频率的1/4。
                TP_auto_mode(); //enable auto mode
                Touch_Panel_Interrupt_Enable();        // 开启触控面板中断。
                Enable_TP();  // 启用触控面板


                RA8875_WAITSTATUS();

                clear_TP_interrupt();
                Active_Window(0,799,0,479);        //设定面板分辨率为800*480 pixel
                HDIR_SEGn_SEG0();                //让屏幕显示颠倒90度
                Clear_Active_Window();
                Text_Background_Color(WHITE);
               
                //Font_with_BackgroundTransparency();
                Memory_Clear();
                Display_ON();
               
                //         LcdClear(WHITE);//清屏

                //设置背光
                PWM1_enable();
                PWM1_fnuction_sel();
                PWM1_clock_ratio(0xFF);//2MHz PWM1
                PWM1_duty_cycle(0x7E);

                PWM2_disable_level_low();
                PWM2_fnuction_sel();
                PWM2_clock_ratio(0x09);//2MHz PWM1
                PWM2_duty_cycle(0x7E);


                //设置数字光标
                Text_Cursor_Horizontal_Size(24);
                Text_Cursor_Vertical_Size(4);
                Text_Blink_Time(0x35);
                Text_Cursor_Blink_Enable();
                Text_Cursor_Disable();
                MemoryWrite_Cursor_autoIncrease();//写光标加1,才和数据显示有关

}
我发现用RA8875的一个好处,fatfs不用936,用437,也就是英文长文件各,同样也显示中文文件名。无意之中发现的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 22:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表