OTM8009A读ID,读寄存器,读像素点颜 {MOD}值全为0。但是写寄存器,写GRAM等操作和显示都是正确的。求做过此控制器的大神帮帮忙啊。

2019-07-20 09:01发布

  使用16位并口进行读写,使用示波器测量读信号都是正确的。就是输出线上全为0,一点信号都没有。
  
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(UINT16 regval)
{
    LCD_DC_CLR;
    LCD_CS_CLR;
    CLI();
    DATAOUT(regval);
    LCD_WRR_CLR;
    LCD_WRR_SET;
    SEI();
    LCD_CS_SET;
}
//写LCD数据
//data:要写入的值
void LCD_WR_DATA(UINT16 data)
{                                                   
    LCD_DC_SET;
    LCD_CS_CLR;
    CLI();
    DATAOUT(data);
    LCD_WRR_CLR;
    LCD_WRR_SET;
    SEI();   
    LCD_CS_SET;     
}

//读LCD数据
//返回值:读到的值
UINT16 LCD_RD_DATA(void)
{                                                   
    UINT16 data = 0;
    UINT16 dummy = 0;

    MX_LCDGPIO_Config_IN();  //配置为输入   
    LCD_DC_SET;
    LCD_CS_CLR;

    LCD_RDW_CLR;
    //HAL_Delay(1);
    //dummy = DATAIN();        //Dummy Data
    LCD_RDW_SET;
    dummy = DATAIN();        //Dummy Data

    LCD_RDW_CLR;
    //HAL_Delay(1);
   
    LCD_RDW_SET;
    data = DATAIN();        //有效值

    LCD_CS_SET;
    MX_LCDGPIO_Config_OT(); //配置为输出
    return data;         
}                       
  
//读寄存器
//LCD_Reg:寄存器地址
//返回值:读到的数据,第二次读为真实值
UINT16 LCD_ReadReg(UINT8 LCD_Reg)
{  
    //LCD_WR_REG(LCD_Reg);        //写入要读的寄存器序号
    LCD_DC_CLR;
    LCD_CS_CLR;
    CLI();
    DATAOUT(LCD_Reg);
    LCD_WRR_CLR;
    LCD_WRR_SET;
    SEI();
    //LCD_CS_SET;
    return LCD_RD_DATA();        //返回读到的值
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
xiezhoujian
2019-07-20 12:30
void WriteComm(unsigned int i)//MCU16位,写操作,先写要读的寄存器,常见IC的ID寄存器都是04H,你也可以读DAH,DBH,DCH
{
         CS0=0;
         RD0=1;
         RS=0;         
         DBH=i>>8;
         DBL=i;
         WR0=0;
         WR0=1;
         CS0=1;
}

unsigned int ReadData(void)//MCU16位,读操作
{
        unsigned int temp;
        DBL = 0xff; //GPIO先拉高
        DBH = 0xff;//GPIO先拉高
        CS0 = 0;
        RS  = 1;        
        WR0 = 1;
        RD0 = 0;
        P4MDOUT = 0x00;         //Set Input Mode Before Read
        P2MDOUT = 0x00; //Set Input Mode Before Read
        _nop_();  _nop_();_nop_();  _nop_();
        RD0 = 1;  //rad enable
        _nop_();  _nop_();_nop_();  _nop_();
        temp=DBH;//ID的低8位
        temp<<=8;
        temp|=DBL;//ID的高
        P4MDOUT = 0xFF; //Set output Mode Before Read
        P2MDOUT = 0xFF; //Set output Mode Before Read
        RD0 = 1;  
        _nop_(); _nop_();_nop_();  _nop_();      
        CS0 = 1;
        return temp;  //返回ID值
}


有需要3.97寸液晶屏(CPT3.97+OTM8009A)的朋友,可以联系我支持MCU-8/16/24BIT,可用于STM32的FSMC接口,目前数量有2500PCS,提供液晶屏的所有技术支持(初始化,CAD图纸,平台上的调试)
淘宝链接图片:https://item.taobao.com/item.htm?id=558608137119
QQ:1263857188

一周热门 更多>