Hi Yuta,

stm32_mpu9250initialize("/dev/mpu0");

This function receive the name of the device file it will creste. The
/dev/i2cX is created by the funcion i2c_register().

BR,

Alan

On Saturday, May 1, 2021, yuta <yutr...@gmail.com> wrote:

> Gregory,
>
> Thank you for your answer.
> I think I'm asking very easy question since I'm very new to NuttX.
>
> I'm not still sure how I can enable an I2C device.
> I understood that there are lower-half driver and upper-half driver and
> they should be associated each other with initialization code.
> Refering some documents like below, I added some lines to do that.
> I can see /dev/i2c1 now but i2c tool still does not detect any i2c device.
> https://github.com/apache/incubator-nuttx/blob/master/boards
> /arm/stm32f0l0g0/nucleo-g070rb/src/stm32_bringup.c#L89-L111
>
> I also tried to make upper-half driver refering here.
> https://github.com/micro-ROS/NuttX/issues/9
> In this case, I call mpu9250_register() which I made instead of
> i2c_register().
> /dev/i2c1 appeared with ls /dev.
> However, `i2c dev -b 1 0x03 0x77 ` did not detect any i2c device.
>
> Yuta Ide
>
> On 2021/04/30 22:18, Gregory Nutt wrote:
>
>> On 4/30/2021 6:34 AM, yuta wrote:
>>
>>> Hi all,
>>> I'm trying to use I2C.
>>> I configured below in menuconfig.
>>> - System Type > STM32 Peripheral Support > [*] I2C1
>>> - Device Drivers > [*] I2C Driver Support
>>> then compilation was done successfully.
>>> But no I2C device( like /dev/i2c1 ) showed up when I tried ls /dev
>>> Do I forget something to do?
>>>
>>> I'm using Nucleo-F767ZI board.
>>>
>>> Thank you.
>>> Yuta Ide
>>>
>>> Did you enable an I2C device?  STM32 I2C peripheral support is not an
>> I2C device.  It an I2C "lower half" and will not create a character
>> device.  You also have to (1) enable an "upper half" device that uses I2C,
>> (2) create an instance of the I2C "lower half", and (3) bind the "lower
>> half" to the "upper half" and register the driver.
>>
>> Remember, I2C is not a device.  I2C is a bus that provides the physical
>> transport to devices on the bus.  You should not normally do direct bus
>> access from applications .. although you can with
>> drivers/i2c/i2c_driver.c.  i2c_driver.c can be used by your
>> board-initialization logic to create a character device that will allow
>> appliations to access the bus directly.  So you can create some kind of
>> very limited user-space driver.  It is limited because it cannot integrate
>> simply with other aspects of the device such as GPIO controls or interrupts.
>>
>>
>>

Reply via email to