新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于新唐M0516LAN的SD5128的驅動測試

        基于新唐M0516LAN的SD5128的驅動測試

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

        最近測試了一個SD5128的驅動,感覺可以 利用M0516LAN的串口來實現,寫了一下測試程序,請大家核對一下是否可行。謝謝大家。
        附件源碼如下:

        本文引用地址:http://www.104case.com/article/201611/323194.htm

        #include
        #include "M051Series.h"
        #include "DriverDrvSYS.h"
        #include "DriverDrvUART.h"
        #include "DriverDrvGPIO.h"

        //SD5128的邏輯0是25%的高75%的低,邏輯1是75%的高25%的低,那就是相當于開始25%是固定低,
        //結束的25%是固定高,中間50%與邏輯相同,那么就可以簡化為數據1000和1110代表邏輯0和邏輯1;
        //SD5128的每個像素是3個字節的RGB數據,結束符是一位的低,25位的高,即可表示為0X7FFFFFFF
        //串口UART起始位是低,結束位是高,剛好與上面的SD5128的邏輯相反,那么串口數據用6位,
        //UART波形取反相后就能與SD5128的占空比符合,每個字符代表SD5128的兩個BIT。編碼關系如下:
        // __________________________________
        // |_ST_| D0 | D1 | D2 | D3 | D4 | D5 | SP |
        // 00 | 0 11 1 0 1 11 | = 0x37
        // 01 | 0 11 1 0 0 01 | = 0x07
        // 10 | 0 00 1 0 1 11 | = 0x34
        // 11 | 0 00 1 0 0 01 | = 0x04

        unsigned char BIT2BYTE[4]={0x37,0x07,0x34,0x04};//BIT2BYTE
        unsigned char ENDCODE[4] ={0x7F,0xFF,0xFF,0xFF};//ENDCODE

        int SD5128_Init(void)
        {
        STR_UART_T sParam;

        /* Set UART0 Pin */
        DrvGPIO_InitFunction(E_FUNC_UART0);

        /* Select UART0 Clock Source From 12Mhz*/
        DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC,0);
        /* Select UART0 Clock Source From PLL*/
        //DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC,1);

        /* UART0 Setting */
        sParam.u32BaudRate = 800000;//1000K
        sParam.u8cDataBits = DRVUART_DATABITS_6;
        sParam.u8cStopBits = DRVUART_STOPBITS_1;
        sParam.u8cParity = DRVUART_PARITY_NONE;
        sParam.u8cRxTriggerLevel= DRVUART_FIFO_1BYTES;

        if(DrvUART_Open(UART_PORT0,&sParam) != E_SUCCESS)
        {
        printf("UART0 open failed");
        return FALSE;
        }
        return TRUE;
        }

        void SD5128_BYTE(unsigned char *buf,unsigned int length)
        {
        int i;

        while(length--)
        {
        i=6;
        while(i>=0)
        {
        while(UART0->FSR.TX_FULL == 1);
        {
        UART0->DATA = BIT2BYTE[(*buf>>i)&0x3];// printf(" 0x%02x",BIT2BYTE[(*buf>>i)&0x3]);
        }
        i=i-2;
        }
        buf++;
        }
        }
        void SD5128_Test(void)
        {
        unsigned int i=0;
        unsigned char RGBDATA[3];//RGB
        unsigned int dly;

        printf("");
        printf("*** 9G-M0516 V1.00 Build byyuanxihua@21cn.comon ("__DATE__ " - " __TIME__ ")");
        printf("*** 9G-M0516 V1.00 Rebooting ...");

        SD5128_Init();
        while(1)
        {
        if(i++ > 0xFE) i=0;
        RGBDATA[0]=RGBDATA[1]=RGBDATA[2]=i;//printf("i=%02x |",i);
        SD5128_BYTE(RGBDATA,3);//printf(" ||");//send rgbdata
        SD5128_BYTE(ENDCODE,4);//send endcode
        for(dly=0;dly<50;dly++)DrvSYS_Delay(1000); //delay 50ms
        }
        }

        代碼結束。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 江川县| 榆林市| 高青县| 杭州市| 灵璧县| 乌苏市| 黎川县| 祁连县| 诏安县| 万州区| 临洮县| 六盘水市| 瑞丽市| 巫山县| 迭部县| 民丰县| 烟台市| 来宾市| 潮州市| 凯里市| 贵港市| 冷水江市| 衡阳县| 成武县| 京山县| 若羌县| 汨罗市| 广汉市| 黑龙江省| 三亚市| 汪清县| 清徐县| 甘洛县| 东辽县| 临潭县| 宜兰县| 中阳县| 文化| 通化市| 仙游县| 公安县|