Beispiel #1
0
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 */
}
Beispiel #4
0
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 */
}
Beispiel #5
0
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);
}
Beispiel #6
0
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 */
}
Beispiel #7
0
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);
}
Beispiel #8
0
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);
}
Beispiel #9
0
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 */
}
Beispiel #10
0
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__ */
}
Beispiel #12
0
/* 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);
}
Beispiel #13
0
/* 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);
}
Beispiel #14
0
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);/*锁存*/     
} 
Beispiel #15
0
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);
}
Beispiel #17
0
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);
}
Beispiel #18
0
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;
}
Beispiel #20
0
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);
}
Beispiel #21
0
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);
}
Beispiel #23
0
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;
}
Beispiel #24
0
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;
}
Beispiel #25
0
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
}
Beispiel #26
0
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;
}
Beispiel #27
0
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
}   
Beispiel #28
0
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
}	
Beispiel #29
0
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;  
}
Beispiel #30
0
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);
}