[post] note:
1.以下为code中需要整合的地方,这些都是8202与MCU通讯的接口函数。
set.h : line12
polling.c : line1423 ,line1631
polling.h : line34
reset.c : line69 , line1223
2.上电reset后,看reser_all()中发送上来的数据是否正常。如果正确就OK!
1.reset.c
#if defined(DVDRELEASE) && !defined(SPHE1000)
#if defined(QSI_SHOW_ERR_RATE)
UART0_set_baudrate(BAUDCC(BAUDRATE_DEFAULT, 121500000));
psprintf(linebuf,"------------Release UART------------\n");
UART0_puts(linebuf);
#elif defined(UART_WITHOUT_DEBUG_MODE)//axel 2004/10/19 for the communication with external MCU
UART0_set_baudrate(BAUDCC(9600, 121500000));
//psprintf(linebuf,"------------Release UART------------\n");
//UART0_puts(linebuf);
#elif defined (MICRO_DVD_UART)
//UART0_set_baudrate(BAUDCC(9600, 108000000));
UART0_set_baudrate(BAUDCC(9600, 121500000));
EPP_PUTC_EXACT(0x2a);
EPP_PUTC_EXACT(0xd5);
EPP_PUTC_EXACT(0x14);
EPP_PUTC_EXACT(0x01);
EPP_PUTC_EXACT(0x14 ^ 0x01);
/*
EPP_PUTC_EXACT(0x2a);
EPP_PUTC_EXACT(0xd5);
EPP_PUTC_EXACT(0x12);
EPP_PUTC_EXACT(0x01);
EPP_PUTC_EXACT(0x12 ^ 0x01);
*/
#else
extern void sft_hvsync();//4-4-6 0:43
sft_hvsync(); //freyman 2004-2-27 12:01
#endif
#endif
2.set.h :
#ifdef DVDRELEASE
#define MICRO_DVD_UART
#endif
3.polling.c : 06/01/16
#ifdef MICRO_DVD_UART
#include "io_uart0.h"
extern const BYTE ir_mapcode[256];
void polling_MICRO_DVD_UART(void)
{
static char key_data;
static BYTE str[5]={0};
char c;
static int nIndex = 0;
#if 1
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
//EPP_PUTC_EXACT(c);
//psprintf(RegionValStr[REGION2], "%02x",nIndex);
//PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
str[nIndex] = c;
//psprintf(RegionValStr[REGION2], "%02x",str[3]);
//PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex++;
}
if(str[0] != 0x2a)
{
nIndex=0;
return;
}
if(nIndex > 3 )
{
if(
(str[0]==0x2a)&&(str[1]==0xD5)&&(str[2]==0x4b)//&&(str[4]==(str[3] ^ 0x4b))
)
{
key_data = str[3];
#ifdef NEW_POWER_ON_SWITCH_MEDIA//added by wangwei, 2005-11-10 11:28
if((key_data == 0x0e) || (key_data == 0x0f))// CARD & USB cmd
{
biMcuCmdTempBuf = key_data;
nIndex=0;
}
else
{
call_ir_func(ir_mapcode[(BYTE) key_data]);
nIndex=0;
}
#else//NEW_POWER_ON_SWITCH_MEDIA
call_ir_func(ir_mapcode[(BYTE) key_data]);
nIndex=0;
#endif//NEW_POWER_ON_SWITCH_MEDIA
}
else
{
nIndex=0;
}
}
#else
//===========================
switch(nIndex)
{
case 0:
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
EPP_PUTC_EXACT(c);
str[nIndex] = c;
}
if(str[0]==0x2a)
{
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex=1;
}
else
{
nIndex=0;
}
break;
case 1:
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
EPP_PUTC_EXACT(c);
str[1] = c;
}
if(str[1]==0xd5)
{
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex=2;
}
else
{
nIndex=0;
}
break;
case 2:
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
EPP_PUTC_EXACT(c);
str[2] = c;
}
if(str[2]==0x4b)
{
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex=3;
}
else
{
nIndex=0;
}
break;
case 3:
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
EPP_PUTC_EXACT(c);
str[3] = c;
key_data = str[3];
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex=4;
}
break;
case 4:
if (!IsEPPRxEmpty())
{
c = EPP_GETC();
EPP_PUTC_EXACT(c);
str[4] = c;
}
if(str[4]==(0x4b^str[3]))
{
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
nIndex=5;
}
else
{
nIndex=0;
}
break;
case 5:
psprintf(RegionValStr[REGION2], "%02x",nIndex);
PrintOsdMsg(STR_OS_SPACE, REGION2, 0, 1);
call_ir_func(ir_mapcode[(BYTE) key_data]);
nIndex=0;
break;
default:
nIndex=0;
break;
}
//===========================
#endif
4.polling.h :
#ifdef MICRO_DVD_UART
void polling_MICRO_DVD_UART(void);
#endif[/post]