新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于新唐NUC120RD2BN的EBI接口的ILI9327的驅動程序

        基于新唐NUC120RD2BN的EBI接口的ILI9327的驅動程序

        作者: 時間:2016-11-29 來源:網絡 收藏

        void ILI9327_Init(void)
        {
        printf("*** ILI9327 Driver V1.00 Build byyuanxihua@21cn.comon ("__DATE__ " - " __TIME__ ")");

        EBI_Init();

        ILI9327_RESET();
        ILI9327_READ_ID();

        ILI9327_CMD(0xE9);//
        ILI9327_DAT(0x20);
        ILI9327_CMD(0x11); //exit_sleep_mode
        DrvSYS_Delay(100000);//100 ms

        ILI9327_CMD(0xD1); //VCOM Control
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x6b);
        ILI9327_DAT(0x18);
        ILI9327_CMD(0xD0); //Power_Setting
        ILI9327_DAT(0x07);
        ILI9327_DAT(0x04);
        ILI9327_DAT(0x88);
        ILI9327_CMD(0x36);//set_address_mode
        ILI9327_DAT(0x88);
        ILI9327_CMD(0xC1);//Display_Timing_Setting for Normal/Partial Mode
        ILI9327_DAT(0x10);
        ILI9327_DAT(0x10);
        ILI9327_DAT(0x02);
        ILI9327_DAT(0x02);
        ILI9327_CMD(0xC0); //Panel Driving Setting
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x35);
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x01);
        ILI9327_DAT(0x02);
        ILI9327_CMD(0xC5); //Frame Rate Control
        ILI9327_DAT(0x02);
        ILI9327_CMD(0xD2); //Power_Setting for Normal Mode
        ILI9327_DAT(0x01);
        ILI9327_DAT(0x44);
        ILI9327_CMD(0xC8);//Gamma Setting
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x56);
        ILI9327_DAT(0x45);
        ILI9327_DAT(0x04);
        ILI9327_DAT(0x03);
        ILI9327_DAT(0x01);
        ILI9327_DAT(0x23);
        ILI9327_DAT(0x12);
        ILI9327_DAT(0x77);
        ILI9327_DAT(0x40);
        ILI9327_DAT(0x09);
        ILI9327_DAT(0x06);
        ILI9327_DAT(0x88);
        ILI9327_DAT(0x88);
        ILI9327_DAT(0x88);
        ILI9327_CMD(0x3A); //set_pixel_format
        ILI9327_DAT(0x55);
        ILI9327_CMD(0x2A);//set_column_address
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x00);
        ILI9327_DAT(0xEF);
        ILI9327_CMD(0x2B);//set_page_address
        ILI9327_DAT(0x00);
        ILI9327_DAT(0x20);
        ILI9327_DAT(0x01);
        ILI9327_DAT(0xAF);
        ILI9327_CMD(0x29); //set_display_on
        ILI9327_CMD(0x2C);//write_memory_start

        DrvGPIO_SetBit(TFT_BL );

        ILI9327_TEST();
        }

        void ILI9327_SLEEP(void)
        {
        ILI9327_CMD(0x10);//enter_sleep_mode
        }

        void ILI9327_WAKEUP(void)
        {
        ILI9327_CMD(0x11);//exit_sleep_mode
        }


        void EBI_test(void)
        {
        uint32_t i,j=0;
        uint32_t data;

        printf("%s(%d): Running: %s()",__FILE__,__LINE__,__FUNCTION__);

        EBI_Init();

        printf("MCLK of EBI colck is %d KHz.", (DrvSYS_GetHCLKFreq()/4)/1000);

        //PA9 PB6 is defined as GPIO;
        outpw(&SYS->GPAMFP, inpw(&SYS->GPAMFP) & ~(0x1<<9));
        outpw(&SYS->GPBMFP, inpw(&SYS->GPBMFP) & ~(0x1<<6));

        //TFT_RST TFT_DC TFT_BLis defined as Output;
        DrvGPIO_Open(TFT_RST, E_IO_OUTPUT);
        DrvGPIO_Open(TFT_DC , E_IO_OUTPUT);
        DrvGPIO_Open(TFT_BL , E_IO_OUTPUT);
        DrvGPIO_Open(E_GPB, 1 , E_IO_OUTPUT); //LED test...

        DrvGPIO_SetBit(TFT_DC );
        DrvGPIO_SetBit(TFT_RST);
        DrvGPIO_ClrBit(TFT_BL );

        while(0)
        {
        //test for write
        *(__IO uint16_t *)((uint32_t)0x60000000) = 0xffff;
        *(__IO uint16_t *)((uint32_t)0x60000000) = 0x0000;
        }
        while(0)
        {
        //test for read
        data = *(__IO uint16_t *)((uint32_t)0x60000000);
        printf("Running %d Times : D15-D0:%1d%1d%1d%1d%1d%1d%1d%1d_%1d%1d%1d%1d%1d%1d%1d%1dB",j++,
        (data>>15)&0x1,(data>>14)&0x1,(data>>13)&0x1,(data>>12)&0x1,
        (data>>11)&0x1,(data>>10)&0x1,(data>> 9)&0x1,(data>> 8)&0x1,
        (data>> 7)&0x1,(data>> 6)&0x1,(data>> 5)&0x1,(data>> 4)&0x1,
        (data>> 3)&0x1,(data>> 2)&0x1,(data>> 1)&0x1,(data>> 0)&0x1);
        for(i=0;i<0x200000;i++); //delay about 1 second
        }
        while(1)
        {
        printf("Running %d Times...",j++);
        //test for IO
        DrvGPIO_SetBit(TFT_RST);
        DrvGPIO_SetBit(TFT_DC );
        DrvGPIO_SetBit(TFT_BL );
        GPIOB->DOUT |= (1 << 1);
        for(i=0;i<0x200000;i++);
        DrvGPIO_ClrBit(TFT_RST);
        DrvGPIO_ClrBit(TFT_DC );
        DrvGPIO_ClrBit(TFT_BL );
        GPIOB->DOUT &= ~(1 << 1);

        for(i=0;i<0x200000;i++);
        }
        }

        文件結束。


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁海县| 平阳县| 锡林浩特市| 贺兰县| 揭西县| 三都| 勐海县| 鸡东县| 永平县| 翁牛特旗| 蒙阴县| 那坡县| 北碚区| 长武县| 怀化市| 云浮市| 南召县| 常熟市| 迁安市| 大荔县| 吉首市| 扬州市| 阿瓦提县| 中方县| 迁安市| 射洪县| 宜黄县| 马公市| 兴国县| 乌拉特前旗| 吐鲁番市| 宁南县| 新巴尔虎左旗| 科技| 杭州市| 河源市| 那曲县| 曲靖市| 沙雅县| 关岭| 延庆县|