NET OS 6.1 Training - PowerPoint PPT Presentation

About This Presentation
Title:

NET OS 6.1 Training

Description:

The boards default to support USB host Only big endian is supported There is no EEPROM support for ... a road was replaced by the big dig Central Intelligence ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 25
Provided by: ftp1DigiC
Category:
Tags: net | training

less

Transcript and Presenter's Notes

Title: NET OS 6.1 Training


1
NETOS 6.1 Training
2
I2C
3
I2C device topics
  • Introduction
  • I2C APIs
  • I2C examples

4
I2C device basic
  • Simple 4-wire device. Multiple I2C devices can
    be connected to the same I2C bus.
  • We support two types (all) I2C devices I2C
    Master and I2C Slave.

5
Performance
  • We support 100Kbits/sec or 400Kbits/sec.
  • Support 7 10 bit addressing
  • Dedicated I/O. No change to the gpio.h

6
IC2 Master Interface
7
I2C Slave
8
7bit addressing format
9
10bit addressing format
10
Device Open()
  • Calls i2c_dev_open()
  • Example
  • i2cPort open("/i2c/0",I2C_SLAVE) or
  • i2cPort open("/i2c/0",I2C_MASTER)
  • I2C device channel /i2c/0
  • I2C device mode I2C_MASTER, or I2C_SLAVE.

11
Device close()
  • Calls i2c_dev_close()
  • Closes the I2C channel.
  • Example
  • ret close(fd)

12
Device Read()
  • Calls i2c_dev_read().
  • int i2c_dev_read(int channel, void i2cMsg, int
    notUsed, int notUsed1)
  • Note i2cMsg is pointer to the i2cMsg type.
  • The i2cMeg will be returned by a read callback
    function in an ISR. DO NOT access it before it
    is returned.

13
Device Write()
  • Calls i2c_dev_write().
  • int i2c_dev_write(int channel, void i2cMsg, int
    notUsed, int notUsed1)
  • The i2cMsg will be returned by a write callback
    function in an ISR context.
  • DO NOT access the message before it is returned.

14
Device Ioctl()
  • Calls i2c_dev_ioctl()
  • Important flags
  • I2C_SET_READ_CALLBACK_FUNC
  • I2C_SET_WRITE_CALLBACK_FUNC
  • I2C_SET_CLOCK_SPEED
  • I2C_SET_GCA_IRQ_ENABLE
  • I2C_FLUSH_BUFFER

15
Other APIs
  • void MCI2cBuildMsg(MC_I2C_MESSAGE_TYPE i2cMsg,
    char buf, unsigned long bufLength, unsigned char
    addr)

16
I2C Specific.
  • I2C driver is interrupt driven and the I2C
    interrupt is part of the BBUS interrupt. After
    we install the I2C interrupt function, on
    receiving every data byte and I2C commannd, we
    will receive an interrupt generated by the I2C
    IP. The MCI2cInterrupt() function will then be
    called by the ISR handler. Based on the state of
    the current I2C bus and whether the Mercury is
    acting as an I2C Master or Slave, the appropriate
    function will be called. Please refer to the I2C
    Master or Slave State machine for ISR handling
    details.
  • A semaphore is used to keep multiple I2C port
    from opening at the same time.
  • A Event flag is created in the application
    example but it is up to the application to
    decide whether to use it or not. The same
    applies to the Event flag in the nausbdevapp
    example as well.

17
Example
  • Typical User application
  • A typical open function call is
  • fd open(i2c/0, I2C_MASTER)
  • Or
  • fd open(i2c/0, I2C_SLAVE)
  • A typical close function call is
  • Ret close(fd)

18
Read() Example
  • Typical usage The third parameter is ignored.
  • RetRead(fd, i2cMsg, 0x0)
  • If (ret -1) printf( read failed.\n)

19
Write() example
  • Typical usage The third parameter is ignored.
  • Retwrite(fd, i2cMsg, 0x0)
  • If (ret -1) printf( write failed.\n)

20
I2C message defination
  • typedef struct _MESSAGE_TYPE
  • char buffer
  • unsigned short address
  • unsigned long bufLength / size of the
    buffer /
  • unsigned long availableDataLen
  • MC_I2C_BUFFER_STATE state
  • MC_I2C_MESSAGE_TYPE

21
Typical write Callback function
  • void writeCallBackFunc(MC_I2C_MESSAGE_TYPE
    ptrData)
  • if (ptrData-gtstate ! I2C_INIT)
  • tx_event_flags_set(i2cEvent,I2C_WRITE_EVENT_F
    LAG, TX_OR)
  • / free(ptrData) /
  • return

22
Typical read callback function
  • void readCallBackFunc(MC_I2C_MESSAGE_TYPE
    ptrData)
  • if (ptrData-gtstate ! I2C_INIT)
  • tx_event_flags_set(i2cEvent,I2C_READ_EVEN
    T_FLAG, TX_OR)
  • / free(ptrData) /
  • return

23
Example application
  • MCI2cBuildMsg(i2cMsg, ptrTemp, 26, 0x60)
  • ret write(i2cPort, i2cMsg, 0)
  • MCInstallIsr (I2C_INTERRUPT, (MC_ISR_HANDLER)
    MCI2cInterrupt, (void ) 0, 0)
  • while( 1 / mySleepCount lt 6 /)
  • ret tx_event_flags_get(i2cEvent,
    I2C_WRITE_EVENT_FLAGI2C_READ_EVENT_FLAG,
    TX_OR_CLEAR, actualEvent, TX_WAIT_FOREVER)

24
Important files
  • Driver Src/bsp/devices/i2c/
  • Example
  • Src/examples/nai2capp/itc_test.c
Write a Comment
User Comments (0)
About PowerShow.com