I2C

我如何知道这个iic的io配置和我电路设计的是一致的?

发布于 2015-04-21 11:25:56
最近刚学习rtt,我用的2.0的源码,开始用iic的时候,发现driveDrive里面只有i2c_core. i2c_dev. 这两个 其中i2c_dev里面有个
rt_err_t rt_i2c_bus_device_device_init(struct rt_i2c_bus_device *bus,
const char *name)
{
struct rt_device *device;
RT_ASSERT(bus != RT_NULL);

device = &bus->parent;

device->user_data = bus;

/* set device type */
device->type = RT_Device_Class_I2CBUS;
/* initialize device interface */
device->init = RT_NULL;
device->open = RT_NULL;
device->close = RT_NULL;
device->read = i2c_bus_device_read;
device->write = i2c_bus_device_write;
device->control = i2c_bus_device_control;

/* register to device manager */
rt_device_register(device, name, RT_DEVICE_FLAG_RDWR);

return RT_EOK;
}

这应该是iic初始化吧,但是我不知到 系统如何配置驱动io的 我再哪儿找到这个配置io的地方 我怎么配置呢? 多谢

查看更多

关注者
0
被浏览
1.3k
3 个回答
bernard
bernard 2015-04-21
components/drivers下的代码都是和具体硬件无关的,需要你自己加入适配的硬件驱动。
yutian
yutian 2015-04-21
多谢 bernard ,我明白了。 io 是用户自己配置,然后调用rtt的组件里的iic的rt_i2c_bus_device_device_init来配置iic相应的寄存器,这样就定义一个i2c变量就ok了,iic就算是初始化完成了。可以这样理解吧? 我还没试,随后有结果在回复。 不过我还有个问题,usart里面好像就不用用户配置了吧? 因为:
int stm32_hw_usart_init(void)
{
struct stm32_uart *uart;
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;

RCC_Configuration();
GPIO_Configuration();

#ifdef RT_USING_UART1
uart = &uart1;

serial1.ops = &stm32_uart_ops;
serial1.config = config;

NVIC_Configuration(&uart1);

/* register UART1 device */
rt_hw_serial_register(&serial1,
"uart1",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
uart);
#endif /* RT_USING_UART1 */
我用2.0.0的源码的usart.c里面这样写,是配置完了么? 看着这确确实实是做了初始化了啊,我得理解对不?

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友