MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_hw_i2c_init

Function rt_hw_i2c_init

bsp/k210/drivers/drv_i2c.c:282–376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

280#endif
281
282int rt_hw_i2c_init(void)
283{
284 struct rt_i2c_bus_device *busdev;
285
286#ifdef BSP_USING_I2C0
287 static struct rt_i2c_bus_device i2c_dev0;
288 busdev = &i2c_dev0;
289
290 #ifdef RT_USING_I2C_BITOPS
291 fpioa_set_function(BSP_I2C0_SCL_PIN, FUNC_RESV0);
292 fpioa_set_function(BSP_I2C0_SDA_PIN, FUNC_RESV0);
293
294 rt_pin_write(BSP_I2C0_SCL_PIN, PIN_LOW);
295 rt_pin_write(BSP_I2C0_SDA_PIN, PIN_LOW);
296 rt_pin_mode(BSP_I2C0_SCL_PIN, PIN_MODE_INPUT_PULLUP);
297 rt_pin_mode(BSP_I2C0_SDA_PIN, PIN_MODE_INPUT_PULLUP);
298
299 static pin_info_t pin0;
300 pin0.scl = get_pin_channel(BSP_I2C0_SCL_PIN);
301 pin0.sda = get_pin_channel(BSP_I2C0_SDA_PIN);
302 bit_ops_0.data = (void *)&pin0;
303
304 busdev->priv = (void *)&bit_ops_0;
305 rt_i2c_bit_add_bus(busdev, "i2c0");
306 #else
307
308 busdev->ops = &i2c_ops;
309 busdev->priv = (void *)I2C0_BASE_ADDR;
310
311 i2c_init(I2C_DEVICE_0, 0, 7, 100000);
312 rt_i2c_bus_device_register(busdev, "i2c0");
313 #endif
314#endif
315
316#ifdef BSP_USING_I2C1
317 static struct rt_i2c_bus_device i2c_dev1;
318 busdev = &i2c_dev1;
319
320 #ifdef RT_USING_I2C_BITOPS
321 fpioa_set_function(BSP_I2C1_SCL_PIN, FUNC_RESV0);
322 fpioa_set_function(BSP_I2C1_SDA_PIN, FUNC_RESV0);
323
324 rt_pin_write(BSP_I2C1_SCL_PIN, PIN_LOW);
325 rt_pin_write(BSP_I2C1_SDA_PIN, PIN_LOW);
326 rt_pin_mode(BSP_I2C1_SCL_PIN, PIN_MODE_INPUT_PULLUP);
327 rt_pin_mode(BSP_I2C1_SDA_PIN, PIN_MODE_INPUT_PULLUP);
328
329 static pin_info_t pin1;
330 pin1.scl = get_pin_channel(BSP_I2C1_SCL_PIN);
331 pin1.sda = get_pin_channel(BSP_I2C1_SDA_PIN);
332 bit_ops_1.data = (void *)&pin1;
333
334 busdev->priv = (void *)&bit_ops_1;
335 rt_i2c_bit_add_bus(busdev, "i2c1");
336 #else
337
338 busdev->ops = &i2c_ops;
339 busdev->priv = (void *)I2C1_BASE_ADDR;

Callers

nothing calls this directly

Calls 6

get_pin_channelFunction · 0.85
rt_i2c_bit_add_busFunction · 0.85
i2c_initFunction · 0.85
rt_pin_writeFunction · 0.50
rt_pin_modeFunction · 0.50

Tested by

no test coverage detected