?? cpb40drvapi.c.bak
字號:
/*=============================================================
* Copyright (c) 2008~2010, CPIT. All Rights Reserved.
*
* MODULE: i2c 驅動
*
* FILENAME: i2cDrv8548.c
*
* DESCRIPTION:i2c 驅動程序代碼
*
*
* HISTORY:
*
* Date CR No Person Description
* ---------- ------------ ------ -------------
* 2008-11-27 litao created.
*
=============================================================*/
#include "vxWorks.h"
#include "sysLib.h"
#include "stdio.h"
#include "semLib.h"
#include "taskLib.h"
#include "../../comm_drv/nbDrvDef.h"
#include"../../comm_drv/nbdrvcommintf.h"
#include "../../Driver/I2C8548/8548_I2C/inc/i2cDrv8548.h"
#include "../inc/cpb40DrvApi.h"
UINT8 gDdConfigWords[] =
{
0xAA,0x55,0xAA,
0xFF,0xFF,0xFF,0x00,0x2F,0x0C,0x00,
0xFF,0xFF,0xFF,0x44,0xEC,0x00,0x18,
0x01,
0x00,0x2F,0x0C,0x00,0x04,0xEC,0x00,0x28,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
STATUS cpb_reset_8144(void)
{
*(UINT8 *)CPB_CPLD_RESET_8144_REG=0x05;
taskDelay(sysClkRateGet());
return OK;
}
SYS_STATUS cpb_cfg_8144()
{
UINT32 cfg_len = 0;
UINT32 cfg_addr = 0x0;
/*write 8144 config*/
/*8144 reset status*/
cpb_reset_8144();
cfg_len = sizeof(gDdConfigWords);
if(NB_DRV_OK != mpc8548_i2c_write(1,0x50,0x00,cfg_len,(UINT8 *)&gDdConfigWords[0]))
{
printf("\r\n8144 config failed.");
return ERROR;
}
/*8144 reset status cleared*/
cpb_reset_8144();
return NB_DRV_OK;
}
/*------------------------------------------------------------------------------
*
* Function Name: fpga_download
*
* Input(s):
* UINT8* pdata:加載數據
* UINT32 len:加載數據長度
*
* Output(s):
* <none>
*
* Returns:
* DRV_OK: 成功
* DRV_ERR:失敗
* DRV_API_ERR_INPUT_PARA:輸入參數錯誤
*
* Description:
*GPIO 的管腳定義:
*GPOUT12 FPGA異步全片復位PROGRAM_B
*GPOUT13 FPGA配置時鐘CCLK0
*GPOUT14 FPGA配置讀寫信號RDWR_B
*GPIN9 FPGA配置完成標志DONE
*GPIN10 FPGA配置校驗標志INIT_B
*GPIN11 FPGA配置忙標志BUSY
*GPOUT0 FPGA配置數據D7
*GPOUT1 FPGA配置數據D6
*GPOUT2 FPGA配置數據D5
*GPOUT3 FPGA配置數據D4
*GPOUT4 FPGA配置數據D3
*GPOUT5 FPGA配置數據D2
*GPOUT6 FPGA配置數據D1
*GPOUT7 FPGA配置數據D0
*
------------------------------------------------------------------------------*/
SYS_STATUS fpga_download (UINT8* str_ptr, UINT32 str_len)
{
UINT32 i;
UINT32 code = 0;
UINT8 *file_prt = NULL;
UINT8 val;
UINT8 orderval;
UINT8 tempnum;
UINT32 tempval = 0;
UINT32 immr_val = vxImmrGet();
if ((NULL == str_ptr ) || (0 == str_len))
{
return DRV_API_ERR_INPUT_PARA;
}
file_prt = str_ptr;
*M85XX_GPIOCR(immr_val) |= TX2OUT | RX2IN | PCIOUT |PCIIN;
*M85XX_DEVDISR(immr_val) |= ETSEC2_DISABLE;
/*prepare download, pulse PROGRAM pin down.*/
*M85XX_GPOUTDR(immr_val) &= (~FPGA_PROG);
/*INIT_B*/
*M85XX_GPINDR(immr_val) &= (~FPGA_INIT);
taskDelay(3) ;
*M85XX_GPOUTDR(immr_val) |= FPGA_PROG;/* release */
taskDelay(3) ;
*M85XX_GPINDR(immr_val) |= FPGA_INIT;/* release */
*M85XX_GPOUTDR(immr_val) &=~FPGA_RDWR;/*write fpga input*/
taskDelay(50) ; /* wait until FPGA finished internal memory clear */
/*check done pin, must be low*/
#if 0
if ((*M85XX_GPINDR(immr_val) & FPGA_DONE ))
{
printf("\r\nfpga_download:fpga busy.....");
return DRV_API_ERR_FPGA_BUSY ;
}
#endif
/*put data onto the FPGA*/
while ( code < str_len )
{
val = file_prt[code++];
orderval = 0;
for(i = 0; i < 4; i++)
{
tempnum = (val>>(7 - i*2)) &((UINT8)0x80 >>(7 - i));
orderval |= tempnum;
tempnum = (val<<(7 - i*2)) &((UINT8)0x01 <<(7 - i));
orderval |= tempnum;
}
*M85XX_GPOUTDR(immr_val) &= (~FPGA_CCLK); /* set CCLK lo */
tempval = *M85XX_GPOUTDR(immr_val);
*M85XX_GPOUTDR(immr_val) = ((orderval << 24) |(tempval & 0x00ffffff));/* put byte onto FPGA */
*M85XX_GPOUTDR(immr_val) |= FPGA_CCLK; /* set CCLK hi */
}
/* send the bits of the last double word */
for (i = 0; i < 120; i++)
{
*M85XX_GPOUTDR(immr_val) &= (~FPGA_CCLK); /* set CCLK lo */
*M85XX_GPOUTDR(immr_val) |= FPGA_CCLK; /* set CCLK hi */
}
taskDelay(10);
if (!(*M85XX_GPINDR(immr_val) & FPGA_DONE ))
{
printf("\r\nfpga_download:fpga is not done.....");
return DRV_API_ERR_FPGA_DONE ;
}
/* reset FPGA */
*(UINT8 *)CPLD_ADRS_RST_REGA |= CPB_FPGA_RESET_BIT;
taskDelay(20);
*(UINT8 *)CPLD_ADRS_RST_REGA &= ~CPB_FPGA_RESET_BIT;
return DRV_OK ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -