예제 #1
0
//============================================================================
//函数名称:hw_send_signal
//功能概要:根据需要产生开始或停止信号   。
//参数说明:         MoudleNum:模块号
//          Signal: 'S'(Start),产生开始信号      'O'(Over),  产生停止信号
//函数返回:无
//============================================================================
void hw_send_signal(uint8 Signal,int MoudleNum)
{
    //获取i2c模块基址
    I2C_MemMapPtr num = hw_i2c_get_base_address(MoudleNum);

    if(num == I2C0)//模块0
    {
        if (Signal == 'S')
        {
            i2c0_Start(); //主机模式选择位MST由0变为1,可以产生开始信号
        }
        else if (Signal == 'O')
        {
            i2c0_Stop();//主机模式选择位MST由1变为0,可以产生停止信号
        }
    }
    else if(num == I2C1)//模块1
    {
        if (Signal == 'S')
        {
            i2c1_Start(); //主机模式选择位MST由0变为1,可以产生开始信号
        }
        else if (Signal == 'O')
        {
            i2c1_Stop();//主机模式选择位MST由1变为0,可以产生停止信号
        }
    }



}
예제 #2
0
파일: i2c.c 프로젝트: MorS25/amcfc
void send_signal(uint8 Signal)
{
    if (Signal == 'S')
    {    
        i2c0_Start(); //主机模式选择位MST由0变为1,可以产生开始信号  
    }  
    else if (Signal == 'O')
    {
        i2c0_Stop();//主机模式选择位MST由1变为0,可以产生停止信号
    }
}
예제 #3
0
/*!
 * Start I2C Transmision
 * @param SlaveID is the 7 bit Slave Address
 * @param Mode sets Read or Write Mode
 */
void IIC_StartTransmission (unsigned char SlaveID, unsigned char Mode)
{
  /* shift ID in right possition */
  SlaveID = (unsigned char) SlaveID << 1;

  /* Set R/W bit at end of Slave Address */
  SlaveID |= (unsigned char)Mode;

  /* send start signal */
  i2c0_Start();

  /* send ID with W/R bit */
  i2c0_write_byte(SlaveID);
}
예제 #4
0
파일: bsp_i2c0.c 프로젝트: wwwqimo/Cube_Sw
/*
*********************************************************************************************************
*	函 数 名: i2c_CheckDevice
*	功能说明: 检测I2C总线设备,CPU向发送设备地址,然后读取设备应答来判断该设备是否存在
*	形    参:  _Address:设备的I2C总线地址
*	返 回 值: 返回值 0 表示正确, 返回1表示未探测到
*********************************************************************************************************
*/
uint8_t i2c0_CheckDevice(uint8_t _Address)
{
	uint8_t ucAck;

	if (I2C_SDA_READ() && I2C_SCL_READ())
	{
		i2c0_Start();		/* 发送启动信号 */

		/* 发送设备地址+读写控制bit(0 = w, 1 = r) bit7 先传 */
		i2c0_SendByte(_Address | I2C0_WR);
		ucAck = i2c0_WaitAck();	/* 检测设备的ACK应答 */

		i2c0_Stop();			/* 发送停止信号 */

		return ucAck;
	}
	return 1;	/* I2C总线异常 */
}