平车主控板(运维板)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
2.5 KiB

5 years ago
#include "bsp_paraid.h"
#include "../clib/Clib.h"
#include "../clib/bit.h"
#include "../msp/msp_eeprom.h"
#include "../msp/uart0.h"
void L1_Iap_erase(vU16 addr)
{
EA = 0;
L0_Iap_Erase(addr);
EA = 1;
}
void L1_Iap_Write_array(vU16 addr,U8 *buf,U8 len)
{
U8 i = 0;
EA = 0;
for(i=0;i<len;i++)
{
L0_Iap_Program(addr + i,buf[i]);
}
EA = 1;
}
void L1_Iap_Read_array(vU16 addr,U8 *buf,U8 len)
{
U8 i = 0;
EA = 0;
for(i=0;i<len;i++)
{
buf[i] = L0_Iap_Read(addr + i);
}
EA = 1;
}
//----------------------------------------------------------
#define D_paraid_debug_print
void L1_paraid_init(void)
{
vU16 pa[2];
/// char *ID;
/// ID = (char idata *)0xf1;/// for (i=0; i<7; i++) { UartSend(ID[i]); }
///UartSend(ID[i]);
// L1_Iap_Read_us(D_paraAdd_paper150,&ts_task_ALGO.usPaper150);
// L1_Iap_Read_us(D_paraAdd_paper150,&ts_task_ALGO.usPaper150);
// L1_Iap_main();
L1_Iap_Read_us(D_paraAdd0_paper150,&pa[0]);
L1_Iap_Read_us(D_paraAdd1_paper150,&pa[1]);
#ifdef D_paraid_debug_print
//L0_uart0_us(pa[0]);L0_uart0_us(pa[1]); PrintCam_L0_uart0_uc(0x0a);
#endif
#if 0
if(pa[1] == pa[0])
{
if(0xffff != pa[1])
{
if(pa[0] < D_paper_150at_top)
{
if(pa[0] > D_paper_150at_bottom)
{
goto GOTO_PARA_OK;
}
}
}
}
GOTO_PARA_ERRO:
L1_Iap_Write_us(D_paraAdd0_paper150,D_paper_150at);
L1_Iap_Write_us(D_paraAdd1_paper150,D_paper_150at);
GOTO_PARA_OK:
;
#endif
///nothing
}
void L1_Iap_Write_us(vU16 addr,vU16 val)
{
EA = 0;
/*********
IAP_CONTR = WT_12M; //使能IAP
IAP_CMD = 3; //设置IAP擦除命令
IAP_ADDRL = addr; //设置IAP低地址
IAP_ADDRH = addr >> 8; //设置IAP高地址
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_(); //
_nop_();
IAP_CMD = 2; //设置IAP写命令
IAP_DATA = dat; //写IAP数据
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();
L0_Iap_Idle(); //关闭IAP功能
***************/
L0_Iap_Erase(addr);
L0_Iap_Program(addr,val>>8);
L0_Iap_Program(addr+1,val&0x00ff);
EA = 1;
}
void L1_Iap_Read_us(vU16 addr,vU16 *val)
{
EA = 0;
*val = L0_Iap_Read(addr);
*val <<= 8;
*val |= L0_Iap_Read(addr+1);
EA = 1;
}