uint8 RDA_bt_SerialCommTxByte(uint8 data) /* return 0 --> ack */ { int32 i; uint8 temp_value = 0; for(i=7; (i>=0)&&(i<=7); i--) { GPIO_WriteIO( 0, RDA5868_SCL); /* low */ DELAY(DURATION_LOW); if(i==7)GPIO_InitIO(1,RDA5868_SDA); DELAY(DURATION_LOW); GPIO_WriteIO(((data>>i)&0x01), RDA5868_SDA); DELAY(DURATION_LOW/2); GPIO_WriteIO( 1, RDA5868_SCL); /* high */ DELAY(DURATION_HIGH); } GPIO_WriteIO(0, RDA5868_SCL); /* low */ DELAY(DURATION_LOW); GPIO_InitIO(0,RDA5868_SDA);/* input */ DELAY(DURATION_LOW/2); GPIO_WriteIO(1, RDA5868_SCL); /* high */ DELAY(DURATION_HIGH); temp_value = GPIO_ReadIO(RDA5868_SDA); GPIO_WriteIO(0, RDA5868_SCL); /* low */ DELAY(DURATION_LOW); return temp_value; }
void SerialCommStop(void) { GPIO_WriteIO(0,SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(0,SDA); GPIO_WriteIO(1,SCL); GPIO_WriteIO(1,SDA); /* stop condition */ }
void SerialCommStart(void) /* start or re-start */ { GPIO_WriteIO(0,SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(1,SDA); GPIO_WriteIO(1,SCL); GPIO_WriteIO(0,SDA); /* start condition */ }
void SerialCommStart(void) /* start or re-start */ { GPIO_WriteIO(1,BUSENABLE); /* bus enabled */ GPIO_WriteIO(0,SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(1,SDA); GPIO_WriteIO(1,SCL); GPIO_WriteIO(0,SDA); /* start condition */ }
void SerialCommPullLow(void) { GPIO_ModeSetup(SCL,0); GPIO_ModeSetup(SDA,0); GPIO_InitIO(1,SDA); GPIO_InitIO(1,SCL); GPIO_WriteIO(0,SCL); GPIO_WriteIO(0,SDA); }
void SerialCommStop(void) { GPIO_WriteIO(0,SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(0,SDA); GPIO_WriteIO(1,SCL); GPIO_WriteIO(1,SDA); /* stop condition */ GPIO_WriteIO(0,BUSENABLE); /* bus disabled */ }
void SerialCommInit(void) { GPIO_ModeSetup(SCL,0); GPIO_ModeSetup(SDA,0); GPIO_ModeSetup(LE,0); GPIO_InitIO(1,SCL); GPIO_InitIO(1,LE); GPIO_WriteIO(1,SCL); GPIO_InitIO(0,SDA); GPIO_WriteIO(0,LE); }
void RDA_bt_SerialCommStop(void) { GPIO_WriteIO(0,RDA5868_SCL); DELAY(DURATION_LOW); GPIO_InitIO(1,RDA5868_SDA); GPIO_WriteIO(0,RDA5868_SDA); DELAY(DURATION_STOP_1); GPIO_WriteIO(1,RDA5868_SCL); DELAY(DURATION_STOP_2); GPIO_WriteIO(1,RDA5868_SDA); /* stop condition */ DELAY(DURATION_STOP_3); }
void RDA_bt_SerialCommStart(void) /* start or re-start */ { GPIO_InitIO(1,RDA5868_SDA); GPIO_WriteIO(1,RDA5868_SDA); GPIO_WriteIO(1,RDA5868_SCL); DELAY(DURATION_START_1); GPIO_WriteIO(0,RDA5868_SDA); DELAY(DURATION_START_2); GPIO_WriteIO(0,RDA5868_SCL); DELAY(DURATION_START_3);/* start condition */ }
void RDA_bt_SerialCommInit(void) { GPIO_ModeSetup(RDA5868_SCL,0); GPIO_ModeSetup(RDA5868_SDA,0); GPIO_InitIO(1,RDA5868_SCL); GPIO_InitIO(1,RDA5868_SDA); GPIO_WriteIO(1,RDA5868_SCL); GPIO_WriteIO(1,RDA5868_SDA); DELAY(DURATION_LOW); }
void B2PSI_write_fast(kal_uint8 data, kal_uint16 register_index) { #ifdef __USB_DOWNLOAD__ kal_uint16 write_data=0; kal_uint16 i, status=0; // extern kal_uint8 pmic_reg_save[]; #if defined(__DRV_B2SPI_SHARE_PIN__) b2spi_serial_lock(); B2PSI_init_sharePin(); #endif write_data=(register_index|B2PSI_WRITE_MASK|data); DRV_WriteReg(DRVPDN_CON1+0x20,(kal_uint16)DRVPDN_CON1_B2SPI); #if (defined(SUPERMAN29_DEMO_BB)&&defined(PCB01)) GPIO_WriteIO(0, B2PSI_CS_PIN); for(debug_loop=0;debug_loop<debug_loop_cnt;debug_loop++){}; #endif //L1D_MeasureMaxDuration_Start( &b2psi_duration ); DRV_WriteReg(B2PSI_DATA,B2PSI_DATA_KEY); #if (defined(SUPERMAN29_DEMO_BB)&&defined(PCB01)) GPIO_WriteIO(1, B2PSI_CS_PIN); #endif /*this short loop is becasue B2PSI needs this to change his state machine*/ for(i=0;i<B2SPI_WAIT_CNT;i++){} #if (defined(SUPERMAN29_DEMO_BB)&&defined(PCB01)) GPIO_WriteIO(0, B2PSI_CS_PIN); for(debug_loop=0;debug_loop<debug_loop_cnt;debug_loop++){}; #endif DRV_WriteReg(B2PSI_DATA,write_data); //L1D_MeasureMaxDuration_Stop( &b2psi_duration ); /*write data to reg_save*/ //pmic_reg_save[(register_index>>PMIC_SHIFT_BITS)]=data; //dbg_data=data; //dbg_index=register_index; do { status=DRV_Reg(B2PSI_STAT); } while(!(status&=0x2)); #if (defined(SUPERMAN29_DEMO_BB)&&defined(PCB01)) GPIO_WriteIO(1, B2PSI_CS_PIN); #endif #if defined(__DRV_B2SPI_SHARE_PIN__) serial_init_sharePin(); b2spi_serial_unlock(); #endif DRV_WriteReg(DRVPDN_CON1+0x10,(kal_uint16)DRVPDN_CON1_B2SPI); #endif /* __USB_DOWNLOAD__ */ }
/* Start sequence of I2C SDA ¢w¢w¢{ ¢|¢w¢w SCL ¢w¢w¢w¢{ ¢|¢w¢w */ void SerialCommStart(void) /* Prepare the SDA and SCL for sending/receiving */ { GPIO_InitIO(OUTPUT,SDA); GPIO_WriteIO(1,SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1,SCL); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(0,SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(0,SCL); I2C_DUMMY_DELAY(I2C_DELAY); }
/* Stop sequence of I2C SDA ¢z¢w¢w ¢w¢w¢w¢} SCL ¢z¢w¢w¢w ¢w¢w¢} */ void SerialCommStop(void) { GPIO_InitIO(OUTPUT,SDA); GPIO_WriteIO(0,SCL); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(0,SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1,SCL); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1,SDA); I2C_DUMMY_DELAY(I2C_DELAY); }
void HorseRace_PowerOff(void) { GPIO_ModeSetup(gpio_horserace_latch_pin,0); GPIO_ModeSetup(gpio_horserace_sdin_pin, 0); GPIO_ModeSetup(gpio_horserace_clk_pin, 0); GPIO_InitIO(1, gpio_horserace_latch_pin); GPIO_InitIO(1, gpio_horserace_sdin_pin); GPIO_InitIO(1, gpio_horserace_clk_pin); GPIO_WriteIO(0, gpio_horserace_sdin_pin);/*输入数据*/ GPIO_WriteIO(0, gpio_horserace_clk_pin);/*时钟*/ GPIO_WriteIO(0, gpio_horserace_latch_pin);/*锁存*/ }
kal_uint8 SerialCommTxByte(kal_uint8 addr, kal_uint8 data) { kal_int16 i; GPIO_WriteIO(1, LE); GPIO_InitIO(1,SDA); for(i=8; --i>=0;){ GPIO_WriteIO( 0, SCL); GPIO_WriteIO(data&0x01, SDA); data >>= 1; I2C_DUMMY_DELAY(5); GPIO_WriteIO( 1, SCL); I2C_DUMMY_DELAY(5); } for(i=8; --i>=0;){ GPIO_WriteIO( 0, SCL); GPIO_WriteIO(addr&0x01, SDA); addr >>= 1; I2C_DUMMY_DELAY(5); GPIO_WriteIO( 1, SCL); I2C_DUMMY_DELAY(5); } GPIO_InitIO(0,SDA); GPIO_WriteIO(0, LE); I2C_DUMMY_DELAY(10); }
uint8 SerialCommTxByte(uint8 data) /* return 0 --> ack */ { int32 i; for(i=7; i>=0; i--) { GPIO_WriteIO( 0, SCL); /* low */ /* The bus operates at a maximum clock frequency of 400 kHz */ if(i==7)GPIO_InitIO(1,SDA); // dummy GPIO_WriteIO(((data>>i)&0x01), SDA); GPIO_WriteIO( 1, SCL); /* high */ } GPIO_WriteIO(0, SCL); /* low */ GPIO_InitIO(0,SDA); GPIO_WriteIO(1, SCL); /* high */ return GPIO_ReadIO(SDA); }
void MT6302_Writer_GPIO(kal_uint8 data) { kal_uint32 i, j; kal_uint8 MT6302_CS_PIN, MT6302_CLK_PIN, MT6302_DAT_PIN; i = SaveAndSetIRQMask(); if(KAL_FALSE == MT6302_checkSPIMode()){ RestoreIRQMask(i); // some states of 3 SPI pins don't match our expectation. ASSERT(0); } MT6302_CS_PIN=MT6302_getGPIOCS(); MT6302_CLK_PIN=MT6302_getGPIOCLK(); MT6302_DAT_PIN=MT6302_getGPIODAT(); GPIO_WriteIO(0, MT6302_CS_PIN); for(j=8;j>0;j--) { if(data&(0x1<<(j-1))) GPIO_WriteIO(1, MT6302_DAT_PIN); else GPIO_WriteIO(0, MT6302_DAT_PIN); GPIO_WriteIO(1, MT6302_CLK_PIN); GPIO_WriteIO(0, MT6302_CLK_PIN); } GPIO_WriteIO(0, MT6302_DAT_PIN); GPIO_WriteIO(1, MT6302_CS_PIN); RestoreIRQMask(i); }
kal_uint8 SerialCommRxByte(kal_uint8 addr, kal_uint8 *data) { kal_int16 i; kal_uint16 dataRead=0; *data = 0; GPIO_WriteIO(1, LE); GPIO_InitIO(1,SDA); for(i=8; --i>=0;){ GPIO_WriteIO( 0, SCL); GPIO_WriteIO(addr&0x01, SDA); GPIO_WriteIO(1, SCL); addr >>= 1; I2C_DUMMY_DELAY(5); } GPIO_InitIO(0,SDA); GPIO_WriteIO(0, LE); for(i=0; i<8; i++){ GPIO_WriteIO( 0, SCL); I2C_DUMMY_DELAY(5); GPIO_WriteIO( 1, SCL); dataRead = GPIO_ReadIO(SDA); *data |= (dataRead << i); } I2C_DUMMY_DELAY(10); }
void SerialCommRxByte(uint8 *data, uint8 ack) { int32 i; uint32 dataCache; dataCache = 0; for(i=7; i>=0; i--) { GPIO_WriteIO(0, SCL); if(i==7)GPIO_InitIO(0,SDA); GPIO_WriteIO(1, SCL); dataCache |= (GPIO_ReadIO(SDA)<<i); } GPIO_WriteIO(0, SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(ack, SDA); GPIO_WriteIO(1, SCL); *data = (uint8)dataCache; }
void SerialCommRxByte(kal_uint8 *data, kal_uint8 ack) { kal_int16 i; kal_uint32 dataCache; dataCache = 0; GPIO_InitIO(0,SDA); for(i=8; --i>=0;){ dataCache <<= 1; GPIO_WriteIO(1, SCL); I2C_DUMMY_DELAY(5); dataCache |= GPIO_ReadIO(SDA); GPIO_WriteIO(0, SCL); I2C_DUMMY_DELAY(5); } GPIO_InitIO(1,SDA); GPIO_WriteIO(ack, SDA); I2C_DUMMY_DELAY(5); GPIO_WriteIO(1, SCL); *data = (kal_uint8)dataCache; GPIO_WriteIO(0, SCL); }
void RDA_bt_SerialCommRxByte(uint8 *data, uint8 ack) { int32 i; uint32 dataCache; dataCache = 0; for(i=7; (i>=0)&&(i<=7); i--) { GPIO_WriteIO(0, RDA5868_SCL); DELAY(DURATION_LOW); if(i==7)GPIO_InitIO(0,RDA5868_SDA); DELAY(DURATION_LOW); GPIO_WriteIO(1, RDA5868_SCL); DELAY(DURATION_HIGH); dataCache |= (GPIO_ReadIO(RDA5868_SDA)<<i); DELAY(DURATION_LOW/2); } GPIO_WriteIO(0, RDA5868_SCL); DELAY(DURATION_LOW); GPIO_InitIO(1,RDA5868_SDA); GPIO_WriteIO(ack, RDA5868_SDA); DELAY(DURATION_LOW/2); GPIO_WriteIO(1, RDA5868_SCL); DELAY(DURATION_HIGH); GPIO_WriteIO(0, RDA5868_SCL); /* low */ DELAY(DURATION_LOW); *data = (uint8)dataCache; }
/************************************************************************* * FUNCTION * serial_init * * DESCRIPTION * This function initializes serial interface. * * PARAMETERS * None * RETURNS * None * * GLOBALS AFFECTED * *************************************************************************/ void serial_init(void) { kal_uint16 delay; kal_int16 x, y; GPIO_WriteIO(0,SPI_CS_PIN); GPIO_ModeSetup(SPI_DIN_PIN, 0x0); GPIO_ModeSetup(SPI_CLK_PIN, 0x0); GPIO_ModeSetup(SPI_DOUT_PIN, 0x0); GPIO_ModeSetup(SPI_CS_PIN, 0x0); GPIO_ModeSetup(SPI_BUSY_PIN, 0x0); GPIO_InitIO(OUTPUT,SPI_DIN_PIN); GPIO_InitIO(OUTPUT,SPI_CLK_PIN); GPIO_InitIO(INPUT,SPI_DOUT_PIN); GPIO_InitIO(OUTPUT,SPI_CS_PIN); GPIO_InitIO(INPUT,SPI_BUSY_PIN); GPIO_WriteIO(0,SPI_CS_PIN); /*AR7643 needs this, so weird*/ for(delay=0;delay<1000;delay++){}; //tp_read_adc(&x, &y); }
void SerialCommRxByte(uint8 *data, uint8 ack) { int32 i; uint32 dataCache; dataCache = 0; for(i=7; i>=0; i--){ GPIO_WriteIO(0, SCL); if(i==7)GPIO_InitIO(0,SDA); { // For EV200 only, solve a hardware bug kal_int32 cnt; // dummy for_loop for(cnt=0; cnt<20; cnt++); } GPIO_WriteIO(1, SCL); dataCache |= (GPIO_ReadIO(SDA)<<i); } GPIO_WriteIO(0, SCL); GPIO_InitIO(1,SDA); GPIO_WriteIO(ack, SDA); GPIO_WriteIO(1, SCL); *data = (uint8)dataCache; }
void SerialCommRxByte(unsigned char *data, unsigned char ack) { int i; unsigned int dataCache; dataCache = 0; GPIO_InitIO(INPUT,SDA); for(i=8; --i>=0;){ dataCache <<= 1; I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1, SCL); I2C_DUMMY_DELAY(I2C_DELAY); dataCache |= GPIO_ReadIO(SDA); GPIO_WriteIO(0, SCL); I2C_DUMMY_DELAY(I2C_DELAY); } GPIO_InitIO(OUTPUT,SDA); GPIO_WriteIO(ack, SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1, SCL); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(0, SCL); I2C_DUMMY_DELAY(I2C_DELAY); *data = (unsigned char)dataCache; }
void irda_switch_to_mir(void) { /*Vishay 6614*/ #if defined(__IRDA_VISHAY_6102__) GPIO_WriteIO(1, IRDA_GPIO_MODE_SWITCH); #elif defined(__IRDA_VISHAY_6614__) DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x7); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x6); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0); #endif }
void noke_drv_horse_race_set( int para ) { /* * @para : * out0 ~ out15 * bit15 ~ bit0 * @out sequence : out15-> out0 */ int i = 0; int v = 0; //noke_dbg_printf("\r Hongzhe.liu: noke_drv_horse_race_set = 0x%04x \n", para); noke_drv_horse_race_io_delay(20); GPIO_WriteIO(0, gpio_horserace_latch_pin); GPIO_WriteIO(0, gpio_horserace_clk_pin); GPIO_WriteIO(0, gpio_horserace_sdin_pin); for( i=0; i<=15; i++) { v = para & 0x0000FFFF & ( 0x0001<<i ); if( v!=0 ) { GPIO_WriteIO(1, gpio_horserace_sdin_pin); }else{ GPIO_WriteIO(0, gpio_horserace_sdin_pin); } noke_drv_horse_race_io_delay(14); GPIO_WriteIO(1, gpio_horserace_clk_pin); noke_drv_horse_race_io_delay(2); GPIO_WriteIO(0, gpio_horserace_clk_pin); noke_drv_horse_race_io_delay(14); } noke_drv_horse_race_io_delay(4); GPIO_WriteIO(1, gpio_horserace_latch_pin); noke_drv_horse_race_io_delay(8); GPIO_WriteIO(0, gpio_horserace_latch_pin); noke_drv_horse_race_io_delay(14); noke_drv_pre_light_parameter = para; }
void irda_switch_to_fir(void) { #if defined(__IRDA_VISHAY_6102__) /*Vishay 6614*/ GPIO_WriteIO(1, IRDA_GPIO_MODE_SWITCH); /*Vishay 6102, Anilent 3220*/ #elif defined(__IRDA_AGILENT_3220__)||defined(__IRDA_VISHAY_6614__) DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x7); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x6); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0); #endif }
void irda_switch_to_sir(void) { #if defined(__IRDA_VISHAY_6102__) /*Vishay 6614*/ #ifndef __CUST_NEW__ GPIO_ModeSetup(IRDA_GPIO_MODE_SWITCH, 0); GPIO_InitIO(OUTPUT, IRDA_GPIO_MODE_SWITCH); #endif /* __CUST_NEW__ */ GPIO_WriteIO(0, IRDA_GPIO_MODE_SWITCH); #elif defined(__IRDA_AGILENT_3220__)||defined(__IRDA_VISHAY_6614__) DRV_WriteReg(IR_TRANSCEIVER_PDN,0x1); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x5); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x4); irda_delay(irda_test_delay); DRV_WriteReg(IR_TRANSCEIVER_PDN,0x0); #endif }
unsigned int SerialCommTxByte(unsigned char data) /* return 0 --> ack */ { int i, ack; GPIO_InitIO(OUTPUT,SDA); for(i=8; --i>0;){ GPIO_WriteIO((data>>i)&0x01, SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO( 1, SCL); /* high */ I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO( 0, SCL); /* low */ I2C_DUMMY_DELAY(I2C_DELAY); } GPIO_WriteIO((data>>i)&0x01, SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO( 1, SCL); /* high */ I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO( 0, SCL); /* low */ I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(0, SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_InitIO(INPUT,SDA); I2C_DUMMY_DELAY(I2C_DELAY); GPIO_WriteIO(1, SCL); I2C_DUMMY_DELAY(I2C_DELAY); ack = GPIO_ReadIO(SDA); /// ack 1: error , 0:ok GPIO_WriteIO(0, SCL); I2C_DUMMY_DELAY(I2C_DELAY); if(ack==1) return 0; else return 1; }
kal_uint8 SerialCommTxByte(kal_uint8 data) /* return 0 --> ack */ { kal_int16 i, ack; GPIO_InitIO(1,SDA); for(i=8; --i>0;){ GPIO_WriteIO((data>>i)&0x01, SDA); I2C_DUMMY_DELAY(5); GPIO_WriteIO( 1, SCL); /* high */ I2C_DUMMY_DELAY(5); GPIO_WriteIO( 0, SCL); /* low */ I2C_DUMMY_DELAY(5); } GPIO_WriteIO((data>>i)&0x01, SDA); I2C_DUMMY_DELAY(5); GPIO_WriteIO( 1, SCL); /* high */ I2C_DUMMY_DELAY(5); GPIO_WriteIO( 0, SCL); /* low */ GPIO_InitIO(0,SDA); GPIO_WriteIO(1, SCL); I2C_DUMMY_DELAY(5); ack = GPIO_ReadIO(SDA); /// ack GPIO_WriteIO(0, SCL); }