stm32f030 SSD1331 彩色OLED SPI传输

SSD1331为彩色OLED  分辨率96*64

芯片资料地址+参考程序:

https://ic-item.jd.com/10032427814200.html   

详细资料请查看对应的资料网盘

参考程序:

       中景园电子0.95OLED显示屏STM32F103C8T6_SPI例程

调试时有部分错误
1.软件模拟SPI部分传输无效
  解决办法:换成自己的SPI传输
 

void LCD_Writ_Bus(u8 dat) 
{    
    SELECT_LCD();//此函数用于拉低OLED片选线
    
  while (!SPI1->SR & SPI_SR_TXE){};//发送区非空
    delay2(2);//us级延时函数
        
            *((uint8_t*)&(SPI1->DR) + 1 ) = dat;
}


2.传输乱码
  可能是自己SPI时钟速度 或者引脚速度的问题
  或者是SPI DR寄存器问题
  解决办法:在每个LCD_Address_Set函数后 需要添加一个us级延时函数 才能传输正确

  且LCD_ShowChar函数在进行 row内 LCD_DrawPoint时 也需要延时函数

  示例
 

 void LCD_ShowChar(u16 x,u16 y,u8 num,u16 color)
{
    u8 pos,t,temp;
    u16 x1=x;
    if(x>LCD_W-16||y>LCD_H-16)return;        //设置窗口           
    num=num-' ';//得到偏移后的值
    LCD_Address_Set(x,y,x+8-1,y+16-1);      //设置光标位置 
        delay2(100);//添加的延时函数
        for(pos=0;pos<16;pos++)
        {
            temp=asc2_1608[(u16)num*16+pos];         //调用1608字体
             for(t=0;t<8;t++)
            {
                if(temp&0x01)LCD_DrawPoint(x+t,y+pos,color);//画一个点
                      else LCD_DrawPoint(x+t,y+pos,WHITE);
                temp>>=1;
                    delay2(100);//添加的延时函数
            }
        }
}


此文章仅用于交流调试中出现过的问题,底层更改驱动等详细移植工作请根据自己的实际情况作改动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值