/** * @brief RDA_bt_SerialCommTxByte蓝牙I2C设置。 * @author LHD * @date 2012-02-16 * @param Data 要发送的数据 * @return uint8 */ uint8 RDA_bt_SerialCommTxByte(uint8 data) /* return 0 --> ack */ { T_S32 i; uint8 temp_value = 0; for(i=7; (i>=0)&&(i<=7); i--){ gpio_set_pin_level(GPIO_I2C_SCLK,0); /* low */ DELAY(DURATION_LOW); if(i==7)gpio_set_pin_dir(GPIO_I2C_SDA,1); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SDA,((data>>i)&0x01)); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SCLK,1); /* high */ DELAY(DURATION_HIGH); } gpio_set_pin_level(GPIO_I2C_SCLK,0);/* low */ DELAY(DURATION_LOW); gpio_set_pin_dir(GPIO_I2C_SDA,0); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_HIGH); temp_value = gpio_get_pin_level(GPIO_I2C_SDA); gpio_set_pin_level(GPIO_I2C_SCLK,0); DELAY(DURATION_LOW); return temp_value; }
void SerialCommInit(void) { gpio_set_pin_dir(GPIO_I2C_SCLK,1); gpio_set_pin_dir(GPIO_I2C_SDA,1); gpio_set_pin_level(GPIO_I2C_SCLK,1); gpio_set_pin_level(GPIO_I2C_SDA,1); }
void SerialCommStop(void) { gpio_set_pin_level(GPIO_I2C_SCLK,0); DELAY(DURATION_LOW); gpio_set_pin_dir(GPIO_I2C_SDA,1); gpio_set_pin_level(GPIO_I2C_SDA,0); DELAY(DURATION_STOP_1); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_STOP_2); gpio_set_pin_level(GPIO_I2C_SDA,1);/* stop condition */ DELAY(DURATION_STOP_3); }
void USB_0_PORT_init(void) { gpio_set_pin_direction(PA24, // <y> Pin direction // <id> pad_direction // <GPIO_DIRECTION_OFF"> Off // <GPIO_DIRECTION_IN"> In // <GPIO_DIRECTION_OUT"> Out GPIO_DIRECTION_OUT); gpio_set_pin_level(PA24, // <y> Initial level // <id> pad_initial_level // <false"> Low // <true"> High false); gpio_set_pin_pull_mode(PA24, // <y> Pull configuration // <id> pad_pull_config // <GPIO_PULL_OFF"> Off // <GPIO_PULL_UP"> Pull-up // <GPIO_PULL_DOWN"> Pull-down GPIO_PULL_OFF); gpio_set_pin_mux(PA24, GPIO_MUX_G); gpio_set_pin_direction(PA25, // <y> Pin direction // <id> pad_direction // <GPIO_DIRECTION_OFF"> Off // <GPIO_DIRECTION_IN"> In // <GPIO_DIRECTION_OUT"> Out GPIO_DIRECTION_OUT); gpio_set_pin_level(PA25, // <y> Initial level // <id> pad_initial_level // <false"> Low // <true"> High false); gpio_set_pin_pull_mode(PA25, // <y> Pull configuration // <id> pad_pull_config // <GPIO_PULL_OFF"> Off // <GPIO_PULL_UP"> Pull-up // <GPIO_PULL_DOWN"> Pull-down GPIO_PULL_OFF); gpio_set_pin_mux(PA25, GPIO_MUX_G); }
static T_BOOL cam_ov3640_close(T_VOID) { gpio_set_pin_level(GPIO_CAMERA_CHIP_ENABLE, !CAM_EN_LEVEL); gpio_set_pin_dir(GPIO_CAMERA_RESET, GPIO_DIR_INPUT); //IICÐèÒªÓûغê gpio_set_pin_dir(28, GPIO_DIR_OUTPUT); gpio_set_pin_level(28, GPIO_LEVEL_LOW); gpio_set_pin_dir(0, GPIO_DIR_OUTPUT); gpio_set_pin_level(0, GPIO_LEVEL_LOW); return AK_TRUE; }
/******************************************************************************* * @brief set LoudSpeaker connect * @author * @date * @param [in]bIsConnect: connect or not * @return T_VOID *******************************************************************************/ T_VOID Fwl_SpkConnectSet(T_BOOL bIsConnect) { if (bIsConnect) { gpio_set_pin_dir(GPIO_SPEAKER_CONTROL, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_SPEAKER_CONTROL, LEVEL_HIGH); } else { gpio_set_pin_dir(GPIO_SPEAKER_CONTROL, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_SPEAKER_CONTROL, LEVEL_LOW); } }
void SerialCommStart(void) /* start or re-start */ { gpio_set_pin_dir(GPIO_I2C_SCLK,1); gpio_set_pin_dir(GPIO_I2C_SDA,1); gpio_set_pin_level(GPIO_I2C_SDA,1); DELAY(DURATION_START_1); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_START_1); gpio_set_pin_level(GPIO_I2C_SDA,0); DELAY(DURATION_START_2); gpio_set_pin_level(GPIO_I2C_SCLK,0);/* start condition */ DELAY(DURATION_START_3); }
static T_VOID cam_ov3640_open(T_VOID) { gpio_set_pin_as_gpio(GPIO_CAMERA_CHIP_ENABLE); gpio_set_pin_dir(GPIO_CAMERA_CHIP_ENABLE, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_CAMERA_CHIP_ENABLE, CAM_EN_LEVEL); delay_ms(10); gpio_set_pin_as_gpio(GPIO_CAMERA_RESET); gpio_set_pin_dir(GPIO_CAMERA_RESET, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_CAMERA_RESET, CAM_RESET_LEVEL); delay_ms(10); gpio_set_pin_level(GPIO_CAMERA_RESET, !CAM_RESET_LEVEL); delay_ms(20); }
/** * @brief select/deselect a nandflash target * @author Yang Yiming * @date 2012-12-25 * @param [in]nTarget target nandflash * @param [in]bSelect AK_TRUE to select, AK_FALSE to deselect * @return T_BOOL */ T_BOOL nfc_select(T_U8 nTarget, T_BOOL bSelect) { //only when additional #ce is needed, this block is essential if (s_nPhyPos[nTarget] < INVALID_GPIO) { gpio_set_pin_dir(s_nPhyPos[nTarget], GPIO_DIR_OUTPUT); gpio_set_pin_level(s_nPhyPos[nTarget], bSelect ? GPIO_LEVEL_LOW : GPIO_LEVEL_HIGH); } if (bSelect) { g_clk_map |= CLK_NFC_EN; store_int(INT_EN_L2); sys_module_enable(eVME_NANDFLASH_CLK, AK_TRUE); sys_share_pin_lock(ePIN_AS_NANDFLASH); s_nActChip = nTarget; } else { s_nActChip = 0xFF; sys_module_enable(eVME_NANDFLASH_CLK, AK_FALSE); sys_share_pin_unlock(ePIN_AS_NANDFLASH); restore_int(); g_clk_map &= ~CLK_NFC_EN; } return AK_TRUE; }
static T_VOID cam_ov2643_open(T_VOID) { gpio_set_pin_dir(GPIO_CAMERA_AVDD, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_CAMERA_AVDD, gpio_pin_get_ActiveLevel(GPIO_CAMERA_AVDD)); gpio_set_pin_as_gpio(GPIO_CAMERA_CHIP_ENABLE); gpio_set_pin_dir(GPIO_CAMERA_CHIP_ENABLE, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_CAMERA_CHIP_ENABLE, CAM_EN_LEVEL); mini_delay(10); gpio_set_pin_as_gpio(GPIO_CAMERA_RESET); gpio_set_pin_dir(GPIO_CAMERA_RESET, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_CAMERA_RESET, CAM_RESET_LEVEL); mini_delay(10); gpio_set_pin_level(GPIO_CAMERA_RESET, !CAM_RESET_LEVEL); mini_delay(20); }
static T_BOOL cam_gc0308_close(T_VOID) { //sccb software standby mode T_U8 Reg0x1a = 0x2b; T_U8 Reg0x25 = 0x00; sccb_write_data(CAMERA_SCCB_ADDR, 0x1a, &Reg0x1a, 1); sccb_write_data(CAMERA_SCCB_ADDR, 0x25, &Reg0x25, 1); gpio_set_pin_level(GPIO_CAMERA_CHIP_ENABLE, !CAM_EN_LEVEL); gpio_set_pin_level(GPIO_CAMERA_AVDD, !gpio_pin_get_ActiveLevel(GPIO_CAMERA_AVDD)); gpio_set_pin_dir(GPIO_CAMERA_RESET, GPIO_DIR_INPUT); gpio_set_pin_dir(GPIO_I2C_SCL, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_I2C_SCL, GPIO_LEVEL_LOW); gpio_set_pin_dir(GPIO_I2C_SDA, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_I2C_SDA, GPIO_LEVEL_LOW); return AK_TRUE; }
uint16 RDAFM_GetChipID(void) { uint8 RDAFM_reg_data[6]={0}; uint16 cChipID; // uint8 tryCount,bRet; SerialCommInit(); gpio_set_pin_level(GPIO_I2C_SCLK,0); DELAY(DURATION_LOW); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_LOW*30); gpio_set_pin_level(GPIO_I2C_SDA,1); gpio_set_pin_level(GPIO_I2C_SCLK,1); RDAFM_reg_data[0]=0x00; RDAFM_reg_data[1]=0x02; OperationRDAFM_2w(WRITE,&RDAFM_reg_data[0], 2); delay_us(30000); OperationRDAFM_2w(READ,&RDAFM_reg_data[0], 6); cChipID=(RDAFM_reg_data[4]*0x100)+ RDAFM_reg_data[5]; if(0x5802==cChipID || 0x5803==cChipID ) { return(0x5802); } else { RDABT_5876_fm_patch_on(); delay_us(10000); OperationRDAFM_2w(WRITE,&(RDAFM_reg_data[0]), 2); delay_us(30000); OperationRDAFM_2w(READ,&(RDAFM_reg_data[0]), 6); cChipID=(RDAFM_reg_data[4]*0x100)+ RDAFM_reg_data[5]; if(0x5802==cChipID || 0x5803==cChipID ) { return(0x5802); } } return (0xFFFF); }
static T_BOOL cam_hm1375_close(T_VOID) { //sccb software standby mode // T_U8 Reg0x3d = 0x48; // T_U8 Reg0xc3 = 0x00; // sccb_write_short(CAMERA_SCCB_ADDR, 0x3d, &Reg0x3d, 1); // sccb_write_short(CAMERA_SCCB_ADDR, 0xc3, &Reg0xc3, 1); gpio_set_pin_level(GPIO_CAMERA_CHIP_ENABLE, !CAM_EN_LEVEL); gpio_set_pin_level(GPIO_CAMERA_AVDD, !gpio_pin_get_ActiveLevel(GPIO_CAMERA_AVDD)); gpio_set_pin_dir(GPIO_CAMERA_RESET, GPIO_DIR_INPUT); gpio_set_pin_dir(GPIO_I2C_SCL, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_I2C_SCL, GPIO_LEVEL_LOW); gpio_set_pin_dir(GPIO_I2C_SDA, GPIO_DIR_OUTPUT); gpio_set_pin_level(GPIO_I2C_SDA, GPIO_LEVEL_LOW); return AK_TRUE; }
void SerialCommRxByte(uint8 *data, uint8 ack) { T_S32 i; uint32 dataCache; dataCache = 0; for(i=7; (i>=0)&&(i<=7); i--){ gpio_set_pin_level(GPIO_I2C_SCLK,0); DELAY(DURATION_LOW); if(i==7)gpio_set_pin_dir(GPIO_I2C_SDA,0); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_HIGH); dataCache |= (gpio_get_pin_level(GPIO_I2C_SDA)<<i); DELAY(DURATION_LOW/2); } gpio_set_pin_level(GPIO_I2C_SCLK,0); DELAY(DURATION_LOW); gpio_set_pin_dir(GPIO_I2C_SDA,1); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SDA,ack); DELAY(DURATION_LOW/2); gpio_set_pin_level(GPIO_I2C_SCLK,1); DELAY(DURATION_HIGH); *data = (uint8)dataCache; gpio_set_pin_level(GPIO_I2C_SCLK,0); }
T_VOID Fwl_DisplaySleep(T_VOID) { gpio_set_pin_level(GPIO_LCD_BACKLIGHT, 0); lcd_turn_off(); }
T_VOID Fwl_DisplayBacklightOff(T_VOID) { gpio_set_pin_level(GPIO_LCD_BACKLIGHT, 0); }