找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1269|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

誰(shuí)有SEPS144A的驅(qū)動(dòng)?PDF內(nèi)有驅(qū)動(dòng)程序,但看不懂

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1091661 發(fā)表于 2024-1-2 19:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如題,有PDF,PDF內(nèi)有驅(qū)動(dòng)程序,但看不懂,那位能給出詳細(xì)的驅(qū)動(dòng)或兼容的芯片程序?

內(nèi)部驅(qū)動(dòng)如下:
各位看看驅(qū)動(dòng)像SSD1351嗎,SEPS114也是彩色OLED驅(qū)動(dòng)芯片
void init_SEPS114A(void)
{
/* 待機(jī)關(guān)閉 */
comm_write(0x14, 0x00);
delay(1); // wait for 1ms
/* 設(shè)置振蕩器操作 */
comm_write(0x0F, 0x00); // using external resistor and internal OSC
/* 設(shè)置幀速率 */
comm_write(0x1A, 0x02); // frame rate : 90Hz
/* 設(shè)置MCU接口 */
comm_write(0x0D, 0x01); // MPU External interface mode, 16bits
/* 設(shè)定放電時(shí)間 */
comm_write(0x18, 0x08); // Discharge time : normal discharge
/* 設(shè)置峰值脈沖延遲 */
comm_write(0x16, 0x05);
/* 設(shè)置峰值脈沖寬度 */
comm_write(0x3A, 0x05);
comm_write(0x3B, 0x05);
comm_write(0x3C, 0x05);
/* 設(shè)置預(yù)充電電流 */
comm_write(0x3D, 0x1F);
comm_write(0x3E, 0x1F);
comm_write(0x3F, 0x1F);
/* 設(shè)置列電流 */
comm_write(0x40, 0x5F);
comm_write(0x41, 0x5F);
comm_write(0x42, 0x5F);
/* 設(shè)置行掃描方向 */
comm_write(0x09, 0x00); // 列 : 最大 0 →,行 : 0 → 最大
/* 設(shè)置行重疊 */
comm_write(0x48, 0x00); // 僅帶隙
/* 設(shè)置掃描關(guān)閉級(jí)別 */
comm_write(0x49, 0x04); //VCC_C*0.75
/* 設(shè)置行掃描模式 */
comm_write(0x13, 0x00); // 備用掃描模式
/* 設(shè)置顯示模式控制 */
comm_write(0xE5, 0x00); //SWAP:RGB,降低電流:正常,DC[1:0]:正常
/* 設(shè)置內(nèi)存讀/寫(xiě)模式 */
comm_write(0x1D, 0x00);
/* 設(shè)置存儲(chǔ)區(qū)(地址)寫(xiě)入顯示數(shù)據(jù) */
comm_write(0x34, 0x00);
comm_write(0x35, 0x5F);
comm_write(0x36, 0x00);
comm_write(0x37, 0x5F);
/* 設(shè)置內(nèi)存接入點(diǎn) */
comm_write(0x38, 0x00);
comm_write(0x39, 0x00);
/* 設(shè)置面板的活動(dòng)顯示區(qū)域 */
comm_write(0x30, 0x00);
comm_write(0x31, 0x5F);
comm_write(0x32, 0x00);
comm_write(0x33, 0x5F);
/* 顯示開(kāi)啟 */
comm_write(0x02, 0x01);
}

/* 將命令寫(xiě)入 SEPS114A 的寄存器
當(dāng)命令寫(xiě)入SEPS114A寄存器時(shí),控制信號(hào) A0 指示電流
data 是索引或命令。在本例中,SEPS114A的 A0 引腳連接到地址線 2 A2。和
訪問(wèn)地址0x80xx_xxxx,控制信號(hào) CS 變?yōu)椤暗碗娖健薄?br /> 因此,當(dāng)用戶將數(shù)據(jù)(0x02)寫(xiě)入下面定義的DISP_COM時(shí),A0信號(hào)和CS信號(hào)變?yōu)椤暗碗娖健?br /> SEPS114A表示此數(shù)據(jù)(0x02)為索引。
當(dāng) data(0x01) 寫(xiě)入 DISP_DATA 時(shí),A0 為“high”,CS 為“l(fā)ow”,因此此 data(0x01) 為命令。 */

#define DISP_COM *((volatile unsigned *)0x80000000)
#define DISP_DATA *((volatile unsigned *)0x80000004) /* A2 : OLED A0 Pin */
void comm_write(unsigned char index, unsigned char command)
{
DISP_COM = index; // 索引寫(xiě)入
DISP_DATA = command; // 命令寫(xiě)入
}

/*將顯示數(shù)據(jù)寫(xiě)入數(shù)據(jù)RAM
該例程是通過(guò) 16 位總線接口將圖像數(shù)據(jù) (96*96) 寫(xiě)入 DDRAM。首先,我們應(yīng)該將
DDRAM接入端口(0x08)。*/

#define HEIGHT 96
#define WIDTH 96
unsigned int img_data[HEIGHT*WIDTH]; // 圖像數(shù)據(jù)緩沖區(qū)
void image_write(void)
{
unsigned i;
DISP_COM = 0x08; // 設(shè)置 DDRAM 接入端口
for(i=0;i++;i<HEIGHT*WIDTH)
DISP_DATA = img_data[ i]; // 將數(shù)據(jù)寫(xiě)入 DDRAM
}

/*RGB接口示例程序
該程序是6位RGB接口的示例程序,通過(guò)SPI控制SEPS114A。*/

/* 選擇RGB數(shù)據(jù)格式,設(shè)置RGB接口端口的初始狀態(tài) */
void init_rgbif(void)
{
reg_write_spi(0xE0, 0x21); /* RGB 6位接口 */

out_signal = 1<<ENABLE|1<<HSYNC|1<<VSYNC|1<<DOTCLK;
OUTPORT = out_signal;
}
void rgb_display(uint16_t red, uint16_t green, uint16_t blue)
{
unsigned short i, j;
/* SEPS114A初始化 */
// 待辦事項(xiàng) :: 初始化SEPS114A(顯示大小、內(nèi)存區(qū)域、幀率等.......)
// 使用“reg_write_spi()”功能(SPI接口)進(jìn)行初始化
init_rgbif();
signal_assert(VSYNC, 0);
signal_assert(HSYNC, 0);

signal_assert(DOTCLK, 0);
signal_assert(DOTCLK, 1);
signal_assert(VSYNC, 1);
signal_assert(HSYNC, 1);

signal_assert(ENABLE, 0);
/* 內(nèi)存(圖形內(nèi)存)端口設(shè)置 */
INDEXDATA = 0x08;
/* 傳輸?shù)谝恍袛?shù)據(jù) */
while(1)
{
signal_assert(VSYNC, 1);

for(i=0;i<96;i++)
{
signal_assert(HSYNC, 1);

for(j=0;j<96;j++)
{
CONTROLDATA = red<<1;
signal_assert(DOTCLK, 0);
signal_assert(DOTCLK, 1);

CONTROLDATA = green<<0;
signal_assert(DOTCLK, 0);
signal_assert(DOTCLK, 1);

CONTROLDATA = blue<<1;
signal_assert(DOTCLK, 0);
signal_assert(DOTCLK, 1);
}

signal_assert(HSYNC, 0);
}

signal_assert(VSYNC, 0);
}
}
void reg_write_spi(uint32_t addr, uint32_t data)
{
spi_write(INDEX, addr);
spi_write(COMMAND, data);
}
void spi_write(uint8_t ch, uint32_t data)
{
unsigned char i;
unsigned short temp=0;
signal_assert(CS, 0);
if(ch == INDEX) signal_assert(A0, 0);
else signal_assert(A0, 1);
for(i=0;i<8;i++)
{
temp = data&(0x80>>i);

signal_assert(SCL, 0);
if(temp) signal_assert(SDI, 1);
else signal_assert(SDI, 0);

signal_assert(SCL, 1);
}
delay(5);
signal_assert(CS, 1);
delay(10);
}

DocumentsSEPS114A.pdf

412.03 KB, 下載次數(shù): 7

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2024-1-3 00:37 | 只看該作者
沒(méi)有通用硬件平臺(tái),不可能有通用驅(qū)動(dòng)的。只能自己寫(xiě),你還是對(duì)軟硬件先建立起基本的概念先,不要問(wèn)這種問(wèn)題了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:23640 發(fā)表于 2024-1-4 14:20 | 只看該作者
上面的驅(qū)動(dòng)先用起來(lái),可能需要做點(diǎn)改動(dòng),搞清楚驅(qū)動(dòng)的步驟就行,再不然找芯片廠支持
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表