(南京观海微电子)——GH8555在所罗门系列主控屏驱动参考

#ifndef PNL_TABLE_GH8555BL01
#define PNL_TABLE_GH8555BL01

#define FLAG_DELAY            0xFE
#define FLAG_END_OF_TABLE     0xFF   // END OF REGISTERS MARKER

#define H_ACTIVE        (600)
#define H_SYNC_WIDTH    (20)
#define H_BACK_PROCH    (60)
#define H_FRONT_PROCH   (120)
#define H_START         (H_BACK_PROCH+H_SYNC_WIDTH)
#define H_TOTAL         (H_START+H_ACTIVE+H_FRONT_PROCH)

#define V_ACTIVE         (1024)
#define V_SYNC_WIDTH     (8)
#define V_BACK_PROCH     (8)
#define V_FRONT_PROCH    (100)
#define V_START          (V_BACK_PROCH+V_SYNC_WIDTH)
#define V_TOTAL          (V_START+V_ACTIVE+V_FRONT_PROCH)

#define FPS              (60)
#define DCLK             (V_TOTAL*H_TOTAL*FPS/1000/1000)

#if 1
MhalPnlParamConfig_t stPanel_GH8555BL01_600x1024 =
{
    "GH8555BL01", // const char *m_pPanelName;                ///<  PanelName
#if !defined (__aarch64__)
    0,
#endif
    1, //MS_U8 m_bPanelDither :1;                 ///<  PANEL_DITHER, keep the setting
    E_MHAL_PNL_LINK_MIPI_DSI, //MHAL_DISP_ApiPnlLinkType_e m_ePanelLinkType   :4;  ///<  PANEL_LINK

    ///
    // Board related setting
    ///
    0,  //MS_U8 m_bPanelDualPort  :1;              ///<  VOP_21[8], MOD_4A[1],    PANEL_DUAL_PORT, refer to m_bPanelDoubleClk
    0,  //MS_U8 m_bPanelSwapPort  :1;              ///<  MOD_4A[0],               PANEL_SWAP_PORT, refer to "LVDS output app note" A/B channel swap
    0,  //MS_U8 m_bPanelSwapOdd_ML    :1;          ///<  PANEL_SWAP_ODD_ML
    0,  //MS_U8 m_bPanelSwapEven_ML   :1;          ///<  PANEL_SWAP_EVEN_ML
    0,  //MS_U8 m_bPanelSwapOdd_RB    :1;          ///<  PANEL_SWAP_ODD_RB
    0,  //MS_U8 m_bPanelSwapEven_RB   :1;          ///<  PANEL_SWAP_EVEN_RB

    0,  //MS_U8 m_bPanelSwapLVDS_POL  :1;          ///<  MOD_40[5], PANEL_SWAP_LVDS_POL, for differential P/N swap
    0,  //MS_U8 m_bPanelSwapLVDS_CH   :1;          ///<  MOD_40[6], PANEL_SWAP_LVDS_CH, for pair swap
    0,  //MS_U8 m_bPanelPDP10BIT      :1;          ///<  MOD_40[3], PANEL_PDP_10BIT ,for pair swap
    0,  //MS_U8 m_bPanelLVDS_TI_MODE  :1;          ///<  MOD_40[2], PANEL_LVDS_TI_MODE, refer to "LVDS output app note"

    ///
    // For TTL Only
    ///
    0,  //MS_U8 m_ucPanelDCLKDelay;                ///<  PANEL_DCLK_DELAY
    0,  //MS_U8 m_bPanelInvDCLK   :1;              ///<  MOD_4A[4],                   PANEL_INV_DCLK
    0,  //MS_U8 m_bPanelInvDE     :1;              ///<  MOD_4A[2],                   PANEL_INV_DE
    0,  //MS_U8 m_bPanelInvHSync  :1;              ///<  MOD_4A[12],                  PANEL_INV_HSYNC
    0,  //MS_U8 m_bPanelInvVSync  :1;              ///<  MOD_4A[3],                   PANEL_INV_VSYNC

    ///
    // Output driving current setting
    ///
    // driving current setting (0x00=4mA, 0x01=6mA, 0x02=8mA, 0x03=12mA)
    0,  //MS_U8 m_ucPanelDCKLCurrent;              ///<  define PANEL_DCLK_CURRENT
    0,  //MS_U8 m_ucPanelDECurrent;                ///<  define PANEL_DE_CURRENT
    0,  //MS_U8 m_ucPanelODDDataCurrent;           ///<  define PANEL_ODD_DATA_CURRENT
    0,  //MS_U8 m_ucPanelEvenDataCurrent;          ///<  define PANEL_EVEN_DATA_CURRENT

    ///
    // panel on/off timing
    ///
    0,  //MS_U16 m_wPanelOnTiming1;                ///<  time between panel & data while turn on power
    0,  //MS_U16 m_wPanelOnTiming2;                ///<  time between data & back light while turn on power
    0,  //MS_U16 m_wPanelOffTiming1;               ///<  time between back light & data while turn off power
    0,  //MS_U16 m_wPanelOffTiming2;               ///<  time between data & panel while turn off power

    ///
    // panel timing spec.
    ///
    // sync related
    H_SYNC_WIDTH,  //MS_U8 m_ucPanelHSyncWidth;               ///<  VOP_01[7:0], PANEL_HSYNC_WIDTH
    H_BACK_PROCH,  //MS_U8 m_ucPanelHSyncBackPorch;           ///<  PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only

                                             ///<  not support Manuel VSync Start/End now
                                             ///<  VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth
                                             ///<  VOP_03[10:0] VSync end = Vtt - VBackPorch
    V_SYNC_WIDTH,  //MS_U8 m_ucPanelVSyncWidth;               ///<  define PANEL_VSYNC_WIDTH
    V_BACK_PROCH,  //MS_U8 m_ucPanelVBackPorch;               ///<  define PANEL_VSYNC_BACK_PORCH

    // DE related
    H_START,  //MS_U16 m_wPanelHStart;                   ///<  VOP_04[11:0], PANEL_HSTART, DE H Start (PANEL_HSYNC_WIDTH + PANEL_HSYNC_BACK_PORCH)
    V_START,  //MS_U16 m_wPanelVStart;                   ///<  VOP_06[11:0], PANEL_VSTART, DE V Start
    H_ACTIVE,  //MS_U16 m_wPanelWidth;                    ///< PANEL_WIDTH, DE width (VOP_05[11:0] = HEnd = HStart + Width - 1)
    V_ACTIVE,  //MS_U16 m_wPanelHeight;                   ///< PANEL_HEIGHT, DE height (VOP_07[11:0], = Vend = VStart + Height - 1)

    // DClk related
    0,  //MS_U16 m_wPanelMaxHTotal;                ///<  PANEL_MAX_HTOTAL. Reserved for future using.
    H_TOTAL,  //MS_U16 m_wPanelHTotal;                   ///<  VOP_0C[11:0], PANEL_HTOTAL
    0,  //MS_U16 m_wPanelMinHTotal;                ///<  PANEL_MIN_HTOTAL. Reserved for future using.

    0,  //MS_U16 m_wPanelMaxVTotal;                ///<  PANEL_MAX_VTOTAL. Reserved for future using.
    V_TOTAL,  //MS_U16 m_wPanelVTotal;                   ///<  VOP_0D[11:0], PANEL_VTOTAL
    0,  //MS_U16 m_wPanelMinVTotal;                ///<  PANEL_MIN_VTOTAL. Reserved for future using.

    0,  //MS_U8 m_dwPanelMaxDCLK;                  ///<  PANEL_MAX_DCLK. Reserved for future using.
    DCLK,  //MS_U8 m_dwPanelDCLK;                     ///<  LPLL_0F[23:0], PANEL_DCLK          ,{0x3100_10[7:0], 0x3100_0F[15:0]}
    0,  //MS_U8 m_dwPanelMinDCLK;                  ///<  PANEL_MIN_DCLK. Reserved for future using.
                                             ///<  spread spectrum
    0x795,  //MS_U16 m_wSpreadSpectrumStep;            ///<  move to board define, no use now.
    0xAB,  //MS_U16 m_wSpreadSpectrumSpan;            ///<  move to board define, no use now.

    0,  //MS_U8 m_ucDimmingCtl;                    ///<  Initial Dimming Value
    0,  //MS_U8 m_ucMaxPWMVal;                     ///<  Max Dimming Value
    0,  //MS_U8 m_ucMinPWMVal;                     ///<  Min Dimming Value

    0,  //MS_U8 m_bPanelDeinterMode   :1;          ///<  define PANEL_DEINTER_MODE,  no use now
    E_MHAL_PNL_ASPECT_RATIO_WIDE,  //MHAL_DISP_PnlAspectRatio_e m_ucPanelAspectRatio; ///<  Panel Aspect Ratio, provide information to upper layer application for aspect ratio setting.
  /*
    *
    * Board related params
    *
    *  If a board ( like BD_MST064C_D01A_S ) swap LVDS TX polarity
    *    : This polarity swap value =
    *      (LVDS_PN_SWAP_H<<8) | LVDS_PN_SWAP_L from board define,
    *  Otherwise
    *    : The value shall set to 0.
    */
    0,  //MS_U16 m_u16LVDSTxSwapValue;
    E_MHAL_PNL_TI_8BIT_MODE,  //MHAL_DISP_ApiPnlTiBitMode_e m_ucTiBitMode;                         ///< MOD_4B[1:0], refer to "LVDS output app note"
    E_MHAL_PNL_OUTPUT_8BIT_MODE,  //MHAL_DISP_ApiPnlOutPutFormatBitMode_e m_ucOutputFormatBitMode;

    0,  //MS_U8 m_bPanelSwapOdd_RG    :1;          ///<  define PANEL_SWAP_ODD_RG
    0,  //MS_U8 m_bPanelSwapEven_RG   :1;          ///<  define PANEL_SWAP_EVEN_RG
    0,  //MS_U8 m_bPanelSwapOdd_GB    :1;          ///<  define PANEL_SWAP_ODD_GB
    0,  //MS_U8 m_bPanelSwapEven_GB   :1;          ///<  define PANEL_SWAP_EVEN_GB

    /**
    *  Others
    */
    0,  //MS_U8 m_bPanelDoubleClk     :1;             ///<  LPLL_03[7], define Double Clock ,LVDS dual mode
    0x0,  //MS_U32 m_dwPanelMaxSET;                     ///<  define PANEL_MAX_SET
    0x0,  //MS_U32 m_dwPanelMinSET;                     ///<  define PANEL_MIN_SET
    E_MHAL_PNL_CHG_VTOTAL,  //MHAL_DISP_ApiPnlOutTimingMode_e m_ucOutTimingMode;   ///<Define which panel output timing change mode is used to change VFreq for same panel
    0,  //MS_U8 m_bPanelNoiseDith     :1;             ///<  PAFRC mixed with noise dither disable
    E_MHAL_PNL_CH_SWAP_2,
    E_MHAL_PNL_CH_SWAP_4,
    E_MHAL_PNL_CH_SWAP_3,
    E_MHAL_PNL_CH_SWAP_1,
    E_MHAL_PNL_CH_SWAP_0,
};

u8 GH8555BL01_CMD[] =
{
    //GH8558BL-01+TRULY6.95(TFT7D0179)600x1024_MIPI 4lane_20231008
    0xee, 0x01, 0x50,        //ENTER PAGE1
    0xea, 0x02, 0x85,0x55,
    0x24, 0x01, 0xa0,        //mirror te
    0x30, 0x01, 0x00,        // bist=1
    0x35, 0x01, 0x00,
    0x50, 0x01, 0x00, 
    0x56, 0x01, 0x83,
    0x7a, 0x01, 0x20,            //
    0x7b, 0x01, 0x00,            // rgb seq
    0x80, 0x01, 0x10, 
    0x90, 0x02, 0x20,0x40,       // ss_tp location
    0x93, 0x01, 0xf8,        //ss chop
    0x95, 0x01, 0x74,  //  74   column invertion
    0x97, 0x01, 0x09,        //smart gip disable 37,07 enable
    0x99, 0x01, 0x10,
    0xee, 0x01, 0x60,         // enter page2
    0x21, 0x01, 0x00, //01
    0x27, 0x01, 0x62,        
    0x2c, 0x01, 0xf9, 
    0x29, 0x01, 0x8a, 
    0x30, 0x01, 0x01,         // 4 LANE
    0x31, 0x01, 0x0f, 
    0x32, 0x01, 0xdc, //d9        //vrs_tldo
    0x33, 0x01, 0xef, //c3
    0x34, 0x01, 0xef, //2f    
    0x3a, 0x01, 0x24, 
    0x3b, 0x01, 0x00,        
    0x3c, 0x01, 0x0b,       //VCOM SET
    0x3d, 0x01, 0x02,       //vgl//02
    0x3e, 0x01, 0x83,      //vgh//A7
    0x42, 0x01, 0x65,       //vspr
    0x43, 0x01, 0x65,       //vsnr
    0x44, 0x01, 0x0b,       //vgh 17V vgl -9.V
    0x46, 0x01, 0x13,      //vgh 17V    vgl -9V
    0x86, 0x01, 0x20, 
    0x89, 0x01, 0x00, 
    0x8a, 0x01, 0xaa,        // blkh,1
    0x91, 0x01, 0x44,        
    0x92, 0x01, 0x33,        //frq_cp1_clk[2:0]
    0x93, 0x01, 0x9f,        //fp7721 power
    0x9a, 0x01, 0x07,        //s_out=600
    0x9b, 0x02, 0x02,0x00,    //vlength=1024
    0x5a, 0x05, 0x00,0x1A,0x2D,0x39,0x3D,        //gamma n 0.4.8.12.20
    0x47, 0x05, 0x00,0x1A,0x2D,0x39,0x3D,      //gamma P0.4.8.12.20
    0x4c, 0x05, 0x4A,0x42,0x53,0x34,0x34,      //28.44.64.96.128.
    0x5f, 0x05, 0x4A,0x42,0x53,0x34,0x34,     //28.44.64.96.128.
    0x64, 0x05, 0x2a,0x12,0x27,0x24,0x33,        //159.191.211.227.235
    0x51, 0x05, 0x43,0x29,0x3d,0x37,0x43,      //159.191.211.227.235
    0x69, 0x04, 0x2f,0x3f,0x4f,0x6f,          //243.247.251.255
    0x56, 0x04, 0x3F,0x4f,0x5f,0x7f,  
    0xee, 0x01, 0x70,
    0x00, 0x04, 0x01,0x05,0x00,0x01,  //
    0x04, 0x04, 0x06,0x0a,0x44,0x01,  //
    0x0C, 0x02, 0x05,0x05,
    0x10, 0x05, 0x06,0x0a,0x00,0x00,0x00,
    0x15, 0x05, 0x00,0x19,0x0c,0x08,0x00,
    0x20, 0x05, 0x02,0x06,0x00,0x00,0x00,
    0x25, 0x05, 0x00,0x15,0x0c,0x07,0x00,
    0x29, 0x02, 0x05,0x05,
    0x45, 0x01, 0x01,
    0x46, 0x05, 0xff,0x00,0x00,0x00,0x50,
    0x4b, 0x01, 0x88,
    0x60, 0x05, 0x3c,0x05,0x07,0x19,0x1d,
    0x65, 0x05, 0x1b,0x1f,0x11,0x11,0x3c,
    0x6a, 0x05, 0x3c,0x3c,0x3c,0x15,0x15,
    0x6f, 0x05, 0x13,0x13,0x17,0x17,0x01,
    0x74, 0x02, 0x03,0x3c,

    0x80, 0x05, 0x3c,0x04,0x06,0x18,0x1c,
    0x85, 0x05, 0x1a,0x1e,0x10,0x10,0x3c,
    0x8a, 0x05, 0x3c,0x3c,0x3c,0x14,0x14,
    0x8f, 0x05, 0x12,0x12,0x16,0x16,0x00,
    0x94, 0x02, 0x02,0x3c,

    0xea, 0x02, 0x00, 0x00,

    0xee, 0x01, 0x00,                     //enter page0
    0x11, 0x00, 0x00,                     //sleep out
    FLAG_DELAY, FLAG_DELAY, 200,
    0x29, 0x00, 0x00,                     //display on
    FLAG_DELAY, FLAG_DELAY, 50,

    FLAG_END_OF_TABLE, FLAG_END_OF_TABLE,
};

#endif 

MhalPnlMipiDsiConfig_t stMipiDsiConfig_GH8555BL01_600x1024 =
{
    //HsTrail HsPrpr HsZero ClkHsPrpr ClkHsExit ClkTrail ClkZero ClkHsPost DaHsExit ContDet
    0x03, 0x04, 0x05, 0x3, 0x05, 0x03, 0x0A, 0x09, 0x05, 0x00,
    //Lpx TaGet TaSure TaGo
    0x10, 0x1a, 0x18, 0x32,

    //Hac, Hpw, Hbp, Hfp, Vac, Vpw, Vbp, Vfp, Bllp, Fps
    H_ACTIVE, H_SYNC_WIDTH, H_BACK_PROCH, H_FRONT_PROCH, V_ACTIVE, V_SYNC_WIDTH, V_BACK_PROCH, V_FRONT_PROCH, 0, FPS,

    E_MHAL_PNL_MIPI_DSI_LANE_4,      // MhalPnlMipiDsiLaneMode_e enLaneNum;
    E_MHAL_PNL_MIPI_DSI_RGB888,      // MhalPnlMipiDsiFormat_e enFormat;
    E_MHAL_PNL_MIPI_DSI_SYNC_PULSE,  // MhalPnlMipiDsiCtrlMode_e enCtrl;

    GH8555BL01_CMD,
    sizeof(GH8555BL01_CMD),

    1, 0x01AF, 0x01B9, 0x80D2, 8,

    0,0,0,0,0,

    E_MHAL_PNL_MIPI_DSI_PACKET_TYPE_GENERIC,
};
#endif //PNL_TABLE_GH8555BL01

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用TM4C123GH6PM微控制器和TB6612电机驱动驱动直流电机的CCS代码示例: ```c #include <stdint.h> #include "tm4c123gh6pm.h" #define PWM_PERIOD 4000 // PWM周期,根据需要进行调整 #define MOTOR_SPEED_MAX 100 // 最大电机速度,根据需要进行调整 // 初始化PWM void PWM_Init(void) { SYSCTL_RCGCPWM_R |= 0x02; // 使能PWM模块1时钟 SYSCTL_RCGCGPIO_R |= 0x02; // 使能GPIO Port B时钟 GPIO_PORTB_AFSEL_R |= 0x01; // Port B引脚1复用为PWM功能 GPIO_PORTB_PCTL_R = (GPIO_PORTB_PCTL_R & 0xFFFFFF0F) + 0x00000050; // 设置PB1的复用功能为PWM GPIO_PORTB_DEN_R |= 0x01; // 使能PB1数字功能 SYSCTL_RCC_R |= 0x00100000; // 选择PWM系统时钟源为PLL PWM1_CTL_R = 0x00; // 关闭PWM模块1 PWM1_GENA_R = (PWM1_GENA_R & 0xFFFFFF8F) + 0x000000C0; // 设置PWM模块1的M1发生器为高电平计数模式 PWM1_LOAD_R = PWM_PERIOD - 1; // 设置PWM周期 PWM1_CMPA_R = 0; // 设置初始占空比为0 PWM1_CTL_R |= 0x01; // 启动PWM模块1 PWM1_ENABLE_R |= 0x02; // 使能PWM模块1的M1发生器 } // 设置电机速度 void Motor_SetSpeed(uint8_t speed) { if (speed > MOTOR_SPEED_MAX) { speed = MOTOR_SPEED_MAX; } PWM1_CMPA_R = (PWM_PERIOD - 1) * speed / MOTOR_SPEED_MAX; } // 初始化GPIO void GPIO_Init(void) { SYSCTL_RCGCGPIO_R |= 0x02; // 使能GPIO Port B时钟 GPIO_PORTB_DIR_R |= 0x0C; // 设置PB2和PB3引脚为输出 GPIO_PORTB_DEN_R |= 0x0C; // 使能PB2和PB3引脚数字功能 } // 设置电机方向 void Motor_SetDirection(uint8_t direction) { if (direction == 0) { GPIO_PORTB_DATA_R &= ~0x0C; // 设置PB2和PB3引脚为低电平,电机停止 } else if (direction == 1) { GPIO_PORTB_DATA_R = (GPIO_PORTB_DATA_R & ~0x04) | 0x08; // 设置PB2引脚为低电平,PB3引脚为高电平,电机正转 } else if (direction == 2) { GPIO_PORTB_DATA_R = (GPIO_PORTB_DATA_R & ~0x08) | 0x04; // 设置PB3引脚为低电平,PB2引脚为高电平,电机反转 } } int main(void) { PWM_Init(); // 初始化PWM GPIO_Init(); // 初始化GPIO while (1) { Motor_SetSpeed(50); // 设置电机速度为50% Motor_SetDirection(1); // 设置电机正转 } } ``` 在上述代码中,`PWM_Init`函数用于初始化PWM模块和引脚,`Motor_SetSpeed`函数用于设置电机速度,`Motor_SetDirection`函数用于设置电机方向。在`main`函数中,可以根据需要设置电机速度和方向。 请注意,此代码示例仅用于参考,具体的引脚和配置可能因实际硬件而异。在实际应用中,您可能需要根据芯片手册和硬件连接自行调整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lornell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值