搜索
bottom↓
回复: 111

共享开源:S3C2450 驱动 群创7寸TFT(AT070TN83,800x480);原理图+驱动源码

[复制链接]

出0入0汤圆

发表于 2010-5-18 23:23:03 | 显示全部楼层 |阅读模式
一款本人设计的 多用途 TFT LCD接口板,支持群创 5.0, 5.6, 7.0三种TFT;
一块LCD驱动板可在多款ARM开发板上直接使用(Mini2440,TQ2440,TQ6410,UT2416,UT2450,Idea6410);
以下是原理图及S3C2450下的驱动源码:

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-5-18 23:23:54 | 显示全部楼层
原理图;
点击此处下载 ourdev_555171.rar(文件大小:181K) (原文件名:原理图.rar)

出0入0汤圆

 楼主| 发表于 2010-5-18 23:24:59 | 显示全部楼层
基于S3C2450的驱动程序源码:
点击此处下载 ourdev_555174.rar(文件大小:4K) (原文件名:S3C2450_GDev.rar)

出0入0汤圆

 楼主| 发表于 2010-5-18 23:25:46 | 显示全部楼层
初始化代码:


static        int        lcd_init(void)
{


        int x,y,m,n;
        U8 pagewidth_in_byte=0,offsize_in_byte=0;       
        U8 clkval=0;
        U16 hsync_cnt,vclk_cnt;
        U16 lcd_horizon_value,lcd_line_value;
        U8 lcd_vbpd,lcd_vfpd,lcd_vspw,lcd_hbpd,lcd_hfpd,lcd_hspw;
        U8 lcd_frame_rate;       
        int i;


        rMISCCR |= (1<<28);  // select LCD controller for TFT lcd controller
        rGPCUDP   = 0xAAAAAAAA;
        rGPCCON   = 0xAAAAAAAA;
        rGPDUDP   = 0xAAAAAAAA;
        rGPDCON   = 0xAAAAAAAA;
        rGPLCON = rGPLCON & ~(0x3ff<<20) | (0x1<< 28) | (0x1<< 26) | (0x1<< 24) | (0x1<< 22) | (0x1<< 20);
        rGPLDAT |= (0x1f<<10);


        rGPBUDP &= ~0x3;
        rGPBCON = (rGPBCON & ~((3<<6)|(3<<2)|(3<<0))) | ((1<<6)|(1<<2)|(1<<0)); // Backlight Pwm control
        rGPBDAT  |=((1<<0) |(1<<3));

        rGPBDAT &= ~(1<<1);

        lcd_horizon_value = LCD_XSIZE;
        lcd_line_value = LCD_YSIZE;
        lcd_vbpd = VBPD;
        lcd_vfpd = VFPD;
        lcd_vspw = VSPW;
        lcd_hbpd = HBPD;
        lcd_hfpd = HFPD;
        lcd_hspw = HSPW;
        lcd_frame_rate = FRAME_RATE;



        pagewidth_in_byte = lcd_horizon_value/8*16;               
        offsize_in_byte = 0;
       
        hsync_cnt         = (lcd_vbpd+lcd_vfpd+lcd_vspw+lcd_line_value);
        vclk_cnt          = (lcd_hbpd+lcd_hfpd+lcd_hspw+lcd_horizon_value);
        //clkval = (U8)(((float)CPU_GetHclkHZ()/(float)(hsync_cnt*vclk_cnt*lcd_frame_rate*2))+0.5)-1;       
        clkval                = 5;       

        rWINCON0 &= ~0x01;
        rWINCON1 &= ~0x01;
       
        rVIDCON0 &= (~3); // ENVID Off using Per Frame method

        rVIDCON0 = (VIDOUT<<22)|(L1_DATA16<<19)|(L0_DATA16<<16)|(PNRMODE<<13)|(CLKVALUP<<12)|(clkval<<6)|(0<<5)|(CLKDIR<<4)|(CLKSEL_F<<2)|(0<<0);
  
       
        rVIDCON1 = (VCLK_INVERTED<<7)|(HSYNC_INVERTED<<6)|(VSYNC_INVERTED<<5)|(VDEN_INVERTED<<4);

        rVIDTCON0 = ((lcd_vbpd-1)<<16)|((lcd_vfpd-1)<<8)|(lcd_vspw-1);
        rVIDTCON1 = ((lcd_hbpd-1)<<16)|((lcd_hfpd-1)<<8)|(lcd_hspw-1);
        rVIDTCON2 = ((lcd_line_value-1)<<11)|(lcd_horizon_value-1);

        #if(LCD_BPP==16)
        rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_16WORD_BURST<<9)|(WINCONx_16BPP_565<<2); // 16word burst, 16bpp,
        #endif
       
        #if(LCD_BPP==24)
        rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_16WORD_BURST<<9)|(WINCONx_24BPP_888<<2); // 16word burst, 24bpp,
        #endif
       
        rVIDOSD0A = (0<<11)|(0);
        rVIDOSD0B = (lcd_horizon_value-1)<<11|(lcd_line_value-1);       
       
        rVIDW00ADD0B0 = (U32)LCD_Buffer;               
        rVIDW00ADD1B0 = (U32)LCD_Buffer + LCD_BUF_SIZE;
        rVIDW00ADD2B0 = (offsize_in_byte<<13)|(LCD_XSIZE*sizeof(LCD_COLOR));
       
        rDITHMODE = (1<<5)|(1<<3)|(1<<1)|(1<<0);
        //rDITHMODE = 0;
       
        rWINCON0 |= 0x1;
        rVIDCON0 |= (1<<5)|0x3;
//?        rINTSUBMSK |= (0xf << IRQ_SUB_LCD1);        // MASK all LCD Sub Interrupt
       
        DebugPrintf("S3C2450_LCDInit End(800x480)\n");

}

出0入0汤圆

 楼主| 发表于 2010-5-18 23:29:37 | 显示全部楼层
JPG格式原理图:


(原文件名:原理图.JPG)

出0入0汤圆

 楼主| 发表于 2010-5-18 23:30:41 | 显示全部楼层

(原文件名:PCB.JPG)

出0入0汤圆

 楼主| 发表于 2010-5-18 23:32:52 | 显示全部楼层
安装和显示效果:


(原文件名:照片 2357.jpg)


(原文件名:照片 2359.jpg)


(原文件名:照片 2504.jpg)


(原文件名:照片 2508.jpg)


(原文件名:照片 2514.jpg)

出0入0汤圆

发表于 2010-5-18 23:39:47 | 显示全部楼层
好帖子,我喜欢

出0入0汤圆

 楼主| 发表于 2010-5-18 23:39:58 | 显示全部楼层
LCD屏数据手册:

点击此处下载 ourdev_555182.pdf(文件大小:771K) (原文件名:EK070TN83.pdf)

出0入0汤圆

发表于 2010-5-19 00:08:32 | 显示全部楼层
请问下楼主AT070TN83价格大概是多少呢?

出0入0汤圆

 楼主| 发表于 2010-5-19 00:18:26 | 显示全部楼层
看情况而定...

出0入0汤圆

发表于 2010-5-19 00:18:40 | 显示全部楼层
不错的东西,用的ADS还是MDK开发的,用于工业显示面板就爽了

出0入0汤圆

 楼主| 发表于 2010-5-19 00:22:58 | 显示全部楼层
回复【11楼】cqfeiyu
-----------------------------------------------------------------------

ADS

出0入0汤圆

发表于 2010-5-19 00:37:26 | 显示全部楼层
有全部源码吗,学习一下,有开发板没?

出0入0汤圆

发表于 2010-5-19 01:01:25 | 显示全部楼层
MARK一下

出0入0汤圆

 楼主| 发表于 2010-5-19 01:02:00 | 显示全部楼层
回复【13楼】cqfeiyu
-----------------------------------------------------------------------

你想要哪些源码?

出0入0汤圆

发表于 2010-5-19 01:13:12 | 显示全部楼层
记号~~

出0入0汤圆

发表于 2010-5-19 01:23:44 | 显示全部楼层
S3C2450的任务就是显示吗?运行操作系统不,如何接收命令,数据,串口通讯还是USB通讯,还是总线通讯,带FIFO不等等疑问非常多

出0入0汤圆

发表于 2010-5-19 08:19:57 | 显示全部楼层
GUI是UCGUI吗?

出0入0汤圆

发表于 2010-5-19 08:27:34 | 显示全部楼层
LZ给你2450的串口测试程序啊,要ADS1.2的工程文件,可以吗?

出0入0汤圆

发表于 2010-5-19 08:34:47 | 显示全部楼层
前排广告位招租。。。。

出0入0汤圆

发表于 2010-5-19 08:48:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-19 08:48:42 | 显示全部楼层
CPU使用率是如何计算出来的呢?

出0入0汤圆

发表于 2010-5-19 08:49:23 | 显示全部楼层
留名

出0入0汤圆

发表于 2010-5-19 08:49:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-19 08:52:57 | 显示全部楼层
贴贴精品。。必顶

出0入4汤圆

发表于 2010-5-19 09:01:58 | 显示全部楼层
楼主显示器相当大

出0入0汤圆

 楼主| 发表于 2010-5-19 09:35:42 | 显示全部楼层
回复【17楼】cqfeiyu
s3c2450的任务就是显示吗?运行操作系统不,如何接收命令,数据,串口通讯还是usb通讯,还是总线通讯,带fifo不等等疑问非常多
-----------------------------------------------------------------------

目前已经是多线程OS + GUI + FS(修改过的FatFs);
通过串口终端作为控制台向系统发送命令和回馈信息
通过USB将系统的RAM盘,NandFlash,SD卡模拟成USB Mass Store与电脑交换数据

出0入0汤圆

 楼主| 发表于 2010-5-19 09:36:10 | 显示全部楼层
OS是继GUI之后的新作:
目前支持信号量和消息队列两种线程间通讯方式;
256级优先级,支持相同优先级的线程,无限线程数

出20入0汤圆

发表于 2010-5-19 09:42:55 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-19 09:59:09 | 显示全部楼层
回复【18楼】Excellence 精益求精
gui是ucgui吗?

-----------------------------------------------------------------------

跟ucGUI相比,区别就大了~~~

出0入0汤圆

发表于 2010-5-19 11:03:18 | 显示全部楼层
好东西!顶LZ,离酷不远了

出0入0汤圆

 楼主| 发表于 2010-5-19 11:24:28 | 显示全部楼层
回复【26楼】electricit
-----------------------------------------------------------------------

电脑显示器?

出0入0汤圆

 楼主| 发表于 2010-5-19 11:27:28 | 显示全部楼层
回复【26楼】electricit
楼主显示器相当大
-----------------------------------------------------------------------

用大分辨率的屏幕可以同时做很多事;

出0入0汤圆

发表于 2010-5-19 14:01:25 | 显示全部楼层
LZ给个2450的串口测试程序啊,随便给个ADS1.2的工程文件y有吗?

出0入0汤圆

 楼主| 发表于 2010-5-19 14:24:09 | 显示全部楼层
#include "System.h"


//===========================[ UART ]==============================

volatile unsigned int DebugUartCh=1;

void SelectDebugUart(unsigned int ch) // ch0 ~ ch3. added by junon 060530
{
        DebugUartCh = ch;
        if (ch>3) DebugUartCh = 1; // default UART channel 1
}

#ifdef                __NANDBL
void InitDebugUart(unsigned int baud) // edited by junon 060530
{
        int ch;
        UART_REGS *pUartRegs;
        unsigned int temp;
       
        // select UART function
        rUCON0 &= ~(0x3);//receive disable before gpio set to prevent dummy data input
        rUCON1 &= ~(0x3);//receive disable
        rUCON2 &= ~(0x3);//receive disable
        rUCON3 &= ~(0x3);//receive disable        
       
        temp = (rGPHCON & ~0xffff ) | 0xaaaa;
        rGPHCON = temp;//set uart mode, keep uart mode if it was to prevent gpio set to input, uart
                                     //it will cause cause rx fifo dummy data input.

        for (ch=0;ch<4;ch++)
        {
                pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*ch);       
                pUartRegs->rUlCon = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
             //  11]  [10]       [9]     [8]        [7]         [6]         [5]          [4]              [3:2]               [1:0]
             // Clock Sel,  Tx Int,  Rx Int, Rx Time Out, Rx err, Loop-back, Send break,  Transmit Mode, Receive Mode
             //  1   0          0       0    ,     0            1           0               0     ,       01                  01
             //   PCLK2      Pulse  Pulse    Disable    Generate  Normal      Normal        Interrupt or Polling
                pUartRegs->rUCon = 0x845;
                //pUartRegs->rUbrDiv = ((int)(PCLK/16./baud+0.5)-1);   //Baud rate divisior register 0
                pUartRegs->rUbrDiv = 26;   //Baud rate divisior register 0
                pUartRegs->rUfCon = 0x6; //UART FIFO control register, FIFO disable, fifo reset
                pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable
        }
       
}
#else
void InitDebugUart(unsigned int baud) // edited by junon 060530
{
        int ch;
        float DIV_VAL;
        int UDIV_SLOT;
        volatile UART_REGS *pUartRegs;
        unsigned int temp;
               
        // select UART function
        rUCON0 &= ~(0x3);//receive disable before gpio set to prevent dummy data input
        rUCON1 &= ~(0x3);//receive disable
        rUCON2 &= ~(0x3);//receive disable
        rUCON3 &= ~(0x3);//receive disable
       
        temp = (rGPHCON & ~0xffff ) | 0xaaaa;
        rGPHCON = temp;//set uart mode, keep uart mode if it was to prevent gpio set to input, uart
                                     //it will cause cause rx fifo dummy data input.

        for (ch=0;ch<4;ch++)
        {
                pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*ch);       
                pUartRegs->rUlCon = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
             //  11]  [10]       [9]     [8]        [7]         [6]         [5]          [4]              [3:2]               [1:0]
             // Clock Sel,  Tx Int,  Rx Int, Rx Time Out, Rx err, Loop-back, Send break,  Transmit Mode, Receive Mode
             //  1   0          0       0    ,     0            1           0               0     ,       01                  01
             //   PCLK2      Pulse  Pulse    Disable    Generate  Normal      Normal        Interrupt or Polling
/*
                pUartRegs->rUCon = 0x245;
                pUartRegs->rUbrDiv = ((int)(PCLK/16./baud+0.5)-1);   //Baud rate divisior register 0
                pUartRegs->rUfCon = 0x0; //UART FIFO control register, FIFO disable
                pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable
                pUartRegs->rUdivSlot= 0x54AA; //UART MODEM control register, AFC disable
*/
                DIV_VAL = ((float)PCLK/16./baud)-1;

                pUartRegs->rUCon = 0x845;
                pUartRegs->rUbrDiv = (int)DIV_VAL;   //Baud rate divisior register 0
                pUartRegs->rUfCon = 0x6; //UART FIFO control register, FIFO disable, tx, rx fifo reset
                pUartRegs->rUmCon = 0x0; //UART MODEM control register, AFC disable

                UDIV_SLOT = (int)( (DIV_VAL-(int)DIV_VAL)*16 );
                switch (UDIV_SLOT) {
                case 0 : pUartRegs->rUdivSlot = 0; break;
                case 1 : pUartRegs->rUdivSlot = 0x0080; break;
                case 2 : pUartRegs->rUdivSlot = 0x0808; break;
                case 3 : pUartRegs->rUdivSlot = 0x0888; break;
                case 4 : pUartRegs->rUdivSlot = 0x2222; break;
                case 5 : pUartRegs->rUdivSlot = 0x4924; break;
                case 6 : pUartRegs->rUdivSlot = 0x4a52; break;
                case 7 : pUartRegs->rUdivSlot = 0x54aa; break;
                case 8 : pUartRegs->rUdivSlot = 0x5555; break;
                case 9 : pUartRegs->rUdivSlot = 0xd555; break;
                case 10 : pUartRegs->rUdivSlot = 0xd5d5; break;
                case 11 : pUartRegs->rUdivSlot = 0xddd5; break;
                case 12 : pUartRegs->rUdivSlot = 0xdddd; break;
                case 13 : pUartRegs->rUdivSlot = 0xdfdd; break;
                case 14 : pUartRegs->rUdivSlot = 0xdfdf; break;
                case 15 : pUartRegs->rUdivSlot = 0xffdf; break;
                }
        }
//        printf("DIV_VAL:%f , UDIV_SLOT:%d\n", DIV_VAL, UDIV_SLOT);
}
#endif



unsigned int Uart_putc(unsigned int c) // edited by junon 060530
{
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       

        if(c=='\n') {
                while(!(pUartRegs->rUtrStat & 0x2));
                pUartRegs->rUtxh = '\r';
        }
        while(!(pUartRegs->rUtrStat & 0x2));         //Wait until THR is empty.
        pUartRegs->rUtxh = c;
        return c;
}



unsigned int Uart_getc(void) // edited by junon 060530
{
        unsigned int chRx;
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       
       
        while(!(pUartRegs->rUtrStat & 0x1)); //Receive data ready
        chRx = pUartRegs->rUrxh;

        return chRx;
}

#ifndef                __NANDBL

int GetIntNum( void)
{
    char str[30];
    char *string = str;
    int base     = 10;
    int minus    = 0;
    int result   = 0;
    int lastIndex;   
    int i,j;
   
    gets(string);

        i=0; j=0;
        do {
                if (string[j]==0x8) {
                        if (i>0)        i--;
                } else
                        string[i++]=string[j];
        } while(string[j++]!=0);


    if(string[0]=='-') {
        minus = 1;
        string++;
    }
   
    if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) {
        base    = 16;
        string += 2;
    }
   
    lastIndex = strlen(string) - 1;
   
    if(lastIndex<0)
        return -1;
   
    if(string[lastIndex]=='h' || string[lastIndex]=='H' ) {
        base = 16;
        string[lastIndex] = 0;
        lastIndex--;
    }

    if(base==10) {
        result = atoi(string);
        result = minus ? (-1*result):result;
    }
    else {
        for(i=0;i<=lastIndex;i++) {
            if(isalpha(string)) {
                if(isupper(string))
                    result = (result<<4) + string - 'A' + 10;
                else
                    result = (result<<4) + string - 'a' + 10;
            }
            else
                result = (result<<4) + string - '0';
        }
        result = minus ? (-1*result):result;
    }
    return result;
}



void Uart_TxEmpty(void)         // added 060624
{
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       

        while(!(pUartRegs->rUtrStat & 0x4)); //Wait until tx shifter is empty.
}


char Uart_GetKey(void) // added 060624
{
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       

        if(pUartRegs->rUtrStat & 0x1)    //Receive data ready
                return pUartRegs->rUrxh;
        else
                return 0;
}


// UART data download function, moved 060718
int UartDownAddress;
U32 UartDownProgramSize;

unsigned int DownloadData(void)
{
    int i;
    U16 checkSum=0,dnCS;
    U32 fileSize=10;
    U8 *downPt, key;
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       

        printf(" Type the download address [D:0x31000000] : ");
        UartDownAddress = GetIntNum();
        if(UartDownAddress == (-1))
                UartDownAddress = 0x31000000;
       
    printf("Do you want to download through Debug UART port from 0x%x? [Y/n] : ",UartDownAddress);
    key=getchar();
    printf("%c\n",key);
    if((key=='n')||(key=='N')) return 0;

    downPt=(U8 *)UartDownAddress;   
    printf("UartDownAddress = %x\n",UartDownAddress);

    printf("Download the plain binary file(.BHC) to be written through UART1 channel\n");
    printf("The file format : <n+6>(4)+(n)+CS(2)\n");
    printf("To transmit .BIN file : wkocm2 xxx.BIN /1 /d:1\n");
    printf("Download methods : COM:8Bit,NP,1STOP\n");

    printf("\nSTATUS : ");
    rINTMSK=BIT_ALLMSK;
   
    //tmp=pUartRegs->rUrxh; //To remove overrun error state.

    i=0;   
    while(i<fileSize)
    {
        while(!(pUartRegs->rUtrStat&0x1));
            *(downPt+i)=pUartRegs->rUrxh;
        if(i==3)
        {
            fileSize=*((U8 *)(UartDownAddress+0))+
            (*((U8 *)(UartDownAddress+1))<<8)+
            (*((U8 *)(UartDownAddress+2))<<16)+
            (*((U8 *)(UartDownAddress+3))<<24);
        }
   
        if((i%1000)==0)
            pUartRegs->rUtxh = '#';
        i++;
    }

    UartDownProgramSize=fileSize-6;

    for(i=4;i<(fileSize-2);i++)
    {
        checkSum+=*((U8 *)(i+UartDownAddress));
    }

    dnCS=*((U8 *)(UartDownAddress+fileSize-2))+
          (*( (U8 *)(UartDownAddress+fileSize-1) )<<8);

    if(checkSum!=dnCS)
    {
        printf("Checksum Error!!! MEM : %x  DN : %x\n",checkSum,dnCS);
        return 0;
    }

    printf("\nDownload O.K.\n");
    return 1;
}


unsigned int AUTO_DownloadData(int downaddr)
{
    int i;
    U16 checkSum=0,dnCS;
    U32 fileSize=10;
    U8 *downPt, key;
        volatile UART_REGS *pUartRegs;

        pUartRegs = (UART_REGS *)(UART_REG_BASE+UART_REG_OFFSET*DebugUartCh);       

        printf(" Type the download address [D:0x31000000] : 0x%x",downaddr);
        //UartDownAddress = GetIntNum();
        UartDownAddress = downaddr;
        if(UartDownAddress == (-1))
                UartDownAddress = 0x31000000;
       
    //printf("Do you want to download through Debug UART port from 0x%x? [Y/n] : ",UartDownAddress);
    //key=getchar();
    //printf("%c\n",key);
    //if((key=='n')||(key=='N')) return 0;

    downPt=(U8 *)UartDownAddress;   
    printf("UartDownAddress = %x\n",UartDownAddress);

    printf("Download the plain binary file(.BHC) to be written through UART1 channel\n");
    printf("The file format : <n+6>(4)+(n)+CS(2)\n");
    printf("To transmit .BIN file : wkocm2 xxx.BIN /1 /d:1\n");
    printf("Download methods : COM:8Bit,NP,1STOP\n");

    printf("\nSTATUS : ");
    rINTMSK=BIT_ALLMSK;
   
    //tmp=pUartRegs->rUrxh; //To remove overrun error state.

    i=0;   
    while(i<fileSize)
    {
        while(!(pUartRegs->rUtrStat&0x1));
            *(downPt+i)=pUartRegs->rUrxh;
        if(i==3)
        {
            fileSize=*((U8 *)(UartDownAddress+0))+
            (*((U8 *)(UartDownAddress+1))<<8)+
            (*((U8 *)(UartDownAddress+2))<<16)+
            (*((U8 *)(UartDownAddress+3))<<24);
        }
   
        if((i%1000)==0)
            pUartRegs->rUtxh = '#';
        i++;
    }

    UartDownProgramSize=fileSize-6;

    for(i=4;i<(fileSize-2);i++)
    {
        checkSum+=*((U8 *)(i+UartDownAddress));
    }

    dnCS=*((U8 *)(UartDownAddress+fileSize-2))+
          (*( (U8 *)(UartDownAddress+fileSize-1) )<<8);

    if(checkSum!=dnCS)
    {
        printf("Checksum Error!!! MEM : %x  DN : %x\n",checkSum,dnCS);
        return 0;
    }

    printf("\nDownload O.K.\n");
    return 1;
}



//===========================[ BOARD LED ]================================

void Init_LED(void)
{
        // LED1,2,4,8 -> GPC 0,5,6,7 in SMDK2450
        rGPCCON = (rGPCCON&~(0x3<<0))|(0x1<<0);
        rGPCCON = (rGPCCON&~(0x3f<<10))|(0x15<<10);
        rGPCUDP        &= ~((0x3f<<10)|(0x3<<0)); // pull-up/down disable
}

void Led_Display(int data)
{
    rGPCDAT = (rGPCDAT & ~((0x7<<5)|(0x0<<0))) | (((data>>1) & 0x7)<<5) |((data & 0x1)<<0);
}


#endif

//===========================[ Initializing Console ]================================

void Console(unsigned int ch) // edited by junon 060530
{
        SelectDebugUart(ch); // ch0 ~ ch3
        InitDebugUart(115200);
#ifndef                __NANDBL
        SetResTDelay(1000); // Resolution of TDelay is 1000us=1ms
        InitTDelayFunc();
        Init_LED();
#endif
}

出0入0汤圆

发表于 2010-5-25 16:08:07 | 显示全部楼层
楼主,你的图能打开,但是确实空白的,怎么回事呀?

出0入0汤圆

发表于 2010-5-25 16:12:25 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2010-5-25 17:17:40 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-25 19:21:53 | 显示全部楼层
回复【36楼】jiki119
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------

什么图?

出0入0汤圆

发表于 2010-5-25 19:38:45 | 显示全部楼层
lz发一个2450的工程文件啊,ADS的.........不行吗

出0入0汤圆

 楼主| 发表于 2010-5-25 21:25:42 | 显示全部楼层
回复【40楼】liouravr
lz发一个2450的工程文件啊,ads的.........不行吗
-----------------------------------------------------------------------

源码都提供了,你自己难道连ADS工程也不会建吗~~~~

出0入0汤圆

发表于 2010-5-25 21:26:26 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-26 10:02:06 | 显示全部楼层
回复【36楼】jiki119
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------

原理图为 power logic 格式

出0入0汤圆

发表于 2010-5-26 13:47:37 | 显示全部楼层
缺文件啊,而且,还有很多设置,你还说对了,我真不会.............

出0入0汤圆

发表于 2010-5-26 14:19:51 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-27 01:25:51 | 显示全部楼层
回复【44楼】liouravr
缺文件啊,而且,还有很多设置,你还说对了,我真不会.............
-----------------------------------------------------------------------

无语......

出0入0汤圆

发表于 2010-5-27 08:32:13 | 显示全部楼层
回复【46楼】liuweiele Liuwei
回复【44楼】liouravr  
缺文件啊,而且,还有很多设置,你还说对了,我真不会.............
-----------------------------------------------------------------------
无语......
-----------------------------------------------------------------------

不错。哼哼哈哈

出0入0汤圆

发表于 2010-5-27 09:58:44 | 显示全部楼层
不错。哼哼哈哈

出0入0汤圆

发表于 2010-6-1 12:00:19 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-6-1 12:21:55 | 显示全部楼层
六一节快乐哈O(∩_∩)O!

出0入0汤圆

发表于 2010-6-10 23:29:12 | 显示全部楼层
非常好!

出0入0汤圆

发表于 2010-9-12 16:32:01 | 显示全部楼层
这几天正在参考这个程序,LZ能提供一下驱动里面用到的GUI.h吗?有些设置应该在这里面。谢谢!
a_tang2008#%#163.com(请把#%#换成@)

出0入0汤圆

发表于 2010-9-16 16:37:34 | 显示全部楼层
飞熊!

出0入0汤圆

发表于 2010-10-15 08:04:19 | 显示全部楼层
绝对经典。正需要

出0入0汤圆

发表于 2010-11-1 17:08:37 | 显示全部楼层
请问lz还有空pcb没,我想买一块

出0入0汤圆

发表于 2010-11-1 17:15:23 | 显示全部楼层
楼主真是个好人

出0入0汤圆

 楼主| 发表于 2010-11-1 20:00:55 | 显示全部楼层
回复【55楼】winterv
请问lz还有空pcb没,我想买一块
-----------------------------------------------------------------------

你是否在广东省内?

出0入0汤圆

发表于 2010-11-1 21:02:38 | 显示全部楼层
不错,显示功能很强大!

出0入0汤圆

 楼主| 发表于 2010-11-1 22:16:52 | 显示全部楼层
回复【58楼】ag_wang
不错,显示功能很强大!
-----------------------------------------------------------------------

新版更强大:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4357508&bbs_page_no=1&search_mode=4&search_text=liuweiele&bbs_id=9999

出0入0汤圆

发表于 2010-11-2 22:52:12 | 显示全部楼层
回复【57楼】liuweiele  Liuwei
-----------------------------------------------------------------------

没有,我在北京,方便吗

出0入0汤圆

 楼主| 发表于 2010-11-2 22:58:05 | 显示全部楼层
回复【60楼】winterv
回复【57楼】liuweiele  liuwei
-----------------------------------------------------------------------
没有,我在北京,方便吗
-----------------------------------------------------------------------

算很远了.

出0入0汤圆

发表于 2010-11-8 07:10:52 | 显示全部楼层
回复【61楼】liuweiele  Liuwei
-----------------------------------------------------------------------

请问:
(1)lcd是怎么固定在pcb上的捏?
(2)触摸屏是怎么固定在lcd上的捏?
(3)支持AT070TN83 v.1否?
(4)邮费我自理,价格合适的话可否卖我一块?

出350入8汤圆

发表于 2010-11-8 08:34:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-9 14:05:54 | 显示全部楼层
LZ,我用的CPU是2440,屏是AT056TN53 ,GPB1接LCD_adj(3脚)调背光亮度;不控制时,屏显示正常,不过PWM一输出,屏就有水波纹,占空比越小,波纹越大,这问题如何解决?

出0入0汤圆

发表于 2010-12-20 13:55:56 | 显示全部楼层
一个字,强!

出0入0汤圆

发表于 2010-12-20 14:03:42 | 显示全部楼层
回复【57楼】liuweiele Liuwei
回复【55楼】winterv  
请问lz还有空pcb没,我想买一块
-----------------------------------------------------------------------
你是否在广东省内?
-----------------------------------------------------------------------

我在广东省内,不过我想买个焊接好的连屏一起

出0入0汤圆

发表于 2010-12-21 10:44:16 | 显示全部楼层
d

出0入0汤圆

发表于 2010-12-21 17:32:57 | 显示全部楼层
高手做的东西就是牛!

出0入0汤圆

发表于 2010-12-21 18:54:28 | 显示全部楼层
原理图是用啥软件做的?打不开啊。

出0入0汤圆

发表于 2010-12-22 14:06:08 | 显示全部楼层
回复【69楼】enterout123
-----------------------------------------------------------------------

我用PADS-POWERLOGIC3.0软件也打不开啊,提示不能打开二进制文件

出0入0汤圆

发表于 2010-12-22 15:52:35 | 显示全部楼层
原理图不全啊

出0入0汤圆

发表于 2010-12-22 23:09:44 | 显示全部楼层
学习学习,给力

出0入0汤圆

发表于 2011-5-7 14:49:06 | 显示全部楼层
看帖难得回,今天必须谢谢楼主~ 开源无敌~~~~~~~

出0入0汤圆

发表于 2011-6-25 17:41:30 | 显示全部楼层
LZ 能不给发一个LCD与S3C2450连接图,能不给一个LCD是如何写数据命令等进去的datasheet
谢谢LZ了

出0入0汤圆

发表于 2011-6-25 17:42:10 | 显示全部楼层
回复【73楼】alwaysGo
-----------------------------------------------------------------------

LZ 能不给发一个LCD与S3C2450连接图,能不给一个LCD是如何写数据命令等进去的datasheet
谢谢LZ了

出0入0汤圆

发表于 2011-7-3 21:01:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-4 09:53:52 | 显示全部楼层
板主善人 mark

出0入0汤圆

发表于 2011-7-4 10:31:50 | 显示全部楼层
不错啊!好好哦看看资料1

出0入0汤圆

发表于 2011-7-4 18:11:25 | 显示全部楼层
标记一下!

谢谢楼主。

出0入0汤圆

发表于 2011-7-5 16:15:38 | 显示全部楼层
学习。

出0入0汤圆

发表于 2011-7-7 09:20:44 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-7-7 14:10:48 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-16 00:18:59 | 显示全部楼层
这个驱动移植到2416上面可以吗?2450中用到加速了吗?

出0入0汤圆

发表于 2011-8-29 18:10:37 | 显示全部楼层
果断顶!好帖!

出0入0汤圆

发表于 2011-8-30 10:44:40 | 显示全部楼层
放个板凳

出0入0汤圆

发表于 2011-8-31 21:51:15 | 显示全部楼层
果断顶!好帖!

出0入0汤圆

 楼主| 发表于 2011-9-5 14:18:04 | 显示全部楼层
回复【91楼】dearwind153
回复【39楼】liuweiele  liuwei
回复【36楼】jiki119  
楼主,你的图能打开,但是确实空白的,怎么回事呀?
-----------------------------------------------------------------------
什么图?
-----------------------------------------------------------------------
就是这个原理图是空白,请问lz是用什么软件打开的,我用protel99se,和altium desginer打开都是空白的

/////////////////////////////////////

power logic

出0入0汤圆

发表于 2011-9-5 14:27:47 | 显示全部楼层
lz总是有硬货,支持

出0入0汤圆

发表于 2011-9-7 19:06:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-27 15:30:25 | 显示全部楼层
一定要MARK

出0入0汤圆

发表于 2011-9-27 15:33:23 | 显示全部楼层
请问楼主怎样才能支持AT070TN92呢,50PIN的LCD,谢谢!

出0入0汤圆

发表于 2011-9-27 23:01:12 | 显示全部楼层
不错,顶

出0入0汤圆

发表于 2011-10-7 22:26:30 | 显示全部楼层
牛人,强烈围观。
mark ARM高手

出0入0汤圆

发表于 2013-1-30 14:42:22 | 显示全部楼层
楼主好人
马克备用
谢谢

出0入0汤圆

发表于 2013-2-5 15:16:52 来自手机 | 显示全部楼层
谢谢楼主.....

出0入0汤圆

发表于 2013-3-7 11:14:14 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2013-4-12 09:36:22 | 显示全部楼层
兄弟可以上传一个S3C2450的封装库吗?

出0入0汤圆

发表于 2013-4-12 09:45:11 | 显示全部楼层
你好!可以给一个S3C2450的封装库吗? 请发到qsjit@163.com谢谢!

出0入0汤圆

发表于 2013-4-12 09:54:23 | 显示全部楼层
你好!可以给一个S3C2450的封装库吗? 请发到qsjit@163.com谢谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-23 22:46

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

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