📄 philips1341.c
字号:
/*********************************************************************************************
* File: philips1341.c
* Author: embest
* Desc: LCD common macro define and function declare
* History:
*********************************************************************************************/
#include "44b.h"
#include "44blib.h"
#include "def.h"
/*------------------------------------------------------------------------------------------*/
/* macro define */
/*------------------------------------------------------------------------------------------*/
#ifdef S3CEV40
#define L3D (0x200)
#define L3M (0x10)
#define L3C (0x20)
#define L3M_LOW() {rPDATB &= ~(L3M);}
#define L3M_HIGH() {rPDATB |= (L3M);}
#define L3C_LOW() {rPDATB &= ~(L3C);}
#define L3C_HIGH() {rPDATB |= (L3C);}
#define L3D_LOW() {rPDATA &= ~(L3D);}
#define L3D_HIGH() {rPDATA |= (L3D);}
#else
#define L3D (0x40)
#define L3M (0x80)
#define L3C (0x20)
#define L3M_LOW() {rPDATE &= ~(L3M);}
#define L3M_HIGH() {rPDATE |= (L3M);}
#define L3C_LOW() {rPDATE &= ~(L3C);}
#define L3C_HIGH() {rPDATE |= (L3C);}
#define L3D_LOW() {rPDATE &= ~(L3D);}
#define L3D_HIGH() {rPDATE |= (L3D);}
#endif
#define FS441KHZ 1
/*------------------------------------------------------------------------------------------*/
/* function declare */
/*------------------------------------------------------------------------------------------*/
void write_l3addr(UINT8T ucData);
void write_l3data(UINT8T ucData, int nHalt);
void init_1341(char cMode);
/*********************************************************************************************
* name: init_1341
* func: Init philips 1341 chip
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void init_1341(char cMode)
{
// Port Initialize
#ifdef S3CEV40
rPCONA = (rPCONA&0x1ff); // PA9:L3DATA
rPCONB = (rPCONB&0x7CF); // PB4:L3M, PB5:L3CLK
#else
rPCONE = (rPCONE&0x303FF)|(0x25400);// PE7:L3MODE PE6:L3DATA PE5:L3CLK
#endif
L3M_HIGH(); // L3M=H(start condition),L3C=H(start condition)
L3C_HIGH();
write_l3addr(0x14+2); // status (000101xx+10)
#ifdef FS441KHZ
write_l3data(0x60,0); // 0,1,10,000,0: reset,256fs,no DCfilter,iis
#else
write_l3data(0x40,0); // 0,1,00,000,0: reset,512fs,no DCfilter,iis
#endif
write_l3addr(0x14+2); // status (000101xx+10)
#ifdef FS441KHZ
write_l3data(0x20,0); // 0,0,10,000,0 no reset,256fs,no DCfilter,iis
#else
write_l3data(0x00,0); // 0,0,00,000,0 no reset,512fs,no DCfilter,iis
#endif
// Set status register
write_l3addr(0x14+2); // status (000101xx+10)
write_l3data(0x81,0); // 1,0,0,0,0,0,11: OGS=0,IGS=0,ADC_NI,DAC_NI,sngl speed,AoffDon
write_l3addr(0x14+0); // data0 (000101xx+00)
write_l3data(0x0A,0);
// Record mode
if(cMode)
{
write_l3addr(0x14+2); // status (000101xx+10)
write_l3data(0xa2,0); // 1,0,1,0,0,0,10: OGS=0,IGS=1,ADC_NI,DAC_NI,sngl speed,AonDoff
write_l3addr(0x14+0); // data0 (000101xx+00)
write_l3data(0xc2,0); // 11000, 010 : DATA0, Extended addr(010)
write_l3data(0x4d,0); // 010, 011, 01 : DATA0, MS=9dB, Ch1=on Ch2=off,
}
}
/*********************************************************************************************
* name: write_l3addr
* func: write control data address to 1341 through L3-interface
* para: ucData -- input, control data address
* ret: none
* modify:
* comment:
*********************************************************************************************/
void write_l3addr(UINT8T ucData)
{
INT32T i,j;
L3M_LOW(); // L3M=L
L3C_HIGH(); // L3C=H
for(j=0; j<4; j++) // tsu(L3) > 190ns
;
for(i=0; i<8; i++)
{
if(ucData&0x1) // if ucData bit is 'H'
{
L3C_LOW(); // L3C=L
L3D_HIGH(); // L3D=H
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
L3C_HIGH(); // L3C=H
L3D_HIGH(); // L3D=H
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
}
else // if ucData bit is 'L'
{
L3C_LOW(); // L3C=L
L3D_LOW(); // L3D=L
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
L3C_HIGH(); // L3C=H
L3D_LOW(); // L3D=L
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
}
ucData >>= 1;
}
L3C_HIGH(); // L3M=H,L3C=H
L3M_HIGH();
}
/*********************************************************************************************
* name: write_l3data
* func: write control data to 1341 through L3-interface
* para: ucData -- input, control data
* nHalt -- input, halt operate
* ret: none
* modify:
* comment:
*********************************************************************************************/
void write_l3data(UINT8T ucData,int nHalt)
{
INT32T i,j;
if(nHalt)
{
L3C_HIGH(); // L3C=H(while tstp, L3 interface halt condition)
for(j=0; j<4; j++) // tstp(L3) > 190ns
;
}
L3C_HIGH();
L3M_HIGH(); // L3M=H(in data transfer mode)
for(j=0; j<4; j++) // tsu(L3)D > 190ns
;
for( i=0; i<8; i++ )
{
if(ucData&0x1) // if data bit is 'H'
{
L3M_HIGH(); // L3M=H
L3C_LOW(); // L3C=L
L3D_HIGH(); // L3D=H
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
L3M_HIGH(); // L3M=H
L3C_HIGH(); // L3C=L
L3D_HIGH();
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
}
else // if data bit is 'L'
{
L3M_HIGH(); // L3M=H
L3C_LOW(); // L3C=L
L3D_LOW(); // L3D=L
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
L3M_HIGH(); // L3M=H
L3C_HIGH(); // L3C=L
L3D_LOW(); // L3D=L
for(j=0; j<4; j++) // tcy(L3) > 500ns
;
}
ucData >>= 1;
}
L3C_HIGH(); // L3M=H,L3C=H
L3M_HIGH();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -