Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

STM32F103RC I2C does not fire Event 5 (EV5)

Status
Not open for further replies.

MarkoSiroki

Member level 2
Joined
Feb 17, 2013
Messages
46
Helped
4
Reputation
8
Reaction score
4
Trophy points
1,288
Location
Ljubljana
Activity points
1,558
Hello, I have following STM32F103RC on custom board (I2C pins reside on PB8, PB9 GPIOB pins) init function:
Code:
GPIO_InitTypeDef ueNCP5623_PinMappingsHandle;
I2C_InitTypeDef ueNCP5623_CommHandle;


int ueSystemInit(void)
{
    SystemInit();


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,
        ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,


    ueNCP5623_PinMappingsHandle.GPIO_Pin=UE_NCP5623_SCL_Pin|UE_NCP5623_SDA_Pin;
    ueNCP5623_PinMappingsHandle.GPIO_Mode=GPIO_Mode_AF_OD;
    ueNCP5623_PinMappingsHandle.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(UE_NCP5623_GPIO_Port,
        &ueNCP5623_PinMappingsHandle);
    GPIO_PinRemapConfig(GPIO_Remap_I2C1,
            ENABLE);


    ueNCP5623_CommHandle.I2C_Ack=I2C_Ack_Disable;
    ueNCP5623_CommHandle.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;
    ueNCP5623_CommHandle.I2C_ClockSpeed=400000;
    ueNCP5623_CommHandle.I2C_DutyCycle=I2C_DutyCycle_2;
    ueNCP5623_CommHandle.I2C_Mode=I2C_Mode_I2C;
    ueNCP5623_CommHandle.I2C_OwnAddress1=0xff;
    I2C_Init(UE_NCP5623_COMM_PORT,
        &ueNCP5623_CommHandle);
    I2C_Cmd(UE_NCP5623_COMM_PORT,
        ENABLE);
}
Now, when I try to write data to slave device via I2C with following function(s):
Code:
void ueI2CWrite(uint8_t ueAddress,
    uint8_t ueData)
{
    ueI2CStart();
    ueI2CAddressDirection(ueAddress<<1,
        I2C_Direction_Transmitter);
    ueI2CTransmit(ueData);
    ueI2CStop();


}   // ueI2CWrite
Code:
void ueI2CStart(void)
{
    while(I2C_GetFlagStatus(UE_NCP5623_COMM_PORT,
        I2C_FLAG_BUSY));


    I2C_GenerateSTART(UE_NCP5623_COMM_PORT,
        ENABLE);


    while(!I2C_CheckEvent(UE_NCP5623_COMM_PORT,
        I2C_EVENT_MASTER_MODE_SELECT));
}   // ueI2CStart()


I get stuck in
Code:
while(!I2C_CheckEvent(UE_NCP5623_COMM_PORT, I2C_EVENT_MASTER_MODE_SELECT));
line, which means (I've checked) EVENT 5 from documentation is not fired (SB bit is not set) and the code steps into endless while loop. Why?

 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top