willycat
Newbie level 6
Hi,
i would like to use an RTC chip with the VNC2 using an I2C interface. There is an I2C driver supplied with the Vinculum2 toolchain, but there is no documentation nor example on how to use it.
I use a vnc2-32L1B chip for my project. I decided to use for the I2C interface the pin 14 for the data signal and the pin15 for the clock signal. 4K pull up resistors are connected to these pins and for that moment, nothing else is connected to these pins except my scope.
I don't know if it is necessary to configure the port, but i do this at the main initialization:
Here is the code to initialise the I2C driver:
To read four bytes from the RTC Chip, i use this:
But nothing happen on my scope, signals are at 0v.
Where can be the problem ? Does someone has an example on how to use this I2C driver ?
Thanks,
Willy.
i would like to use an RTC chip with the VNC2 using an I2C interface. There is an I2C driver supplied with the Vinculum2 toolchain, but there is no documentation nor example on how to use it.
I use a vnc2-32L1B chip for my project. I decided to use for the I2C interface the pin 14 for the data signal and the pin15 for the clock signal. 4K pull up resistors are connected to these pins and for that moment, nothing else is connected to these pins except my scope.
I don't know if it is necessary to configure the port, but i do this at the main initialization:
C:
// Configure direction of port B
vos_gpio_set_port_mode(GPIO_PORT_B, 0xc0);
// For the data signal
vos_iomux_define_bidi(14, IOMUX_IN_GPIO_PORT_B_2, IOMUX_OUT_GPIO_PORT_B_6);
// For the clock signal
vos_iomux_define_bidi(15, IOMUX_IN_GPIO_PORT_B_3, IOMUX_OUT_GPIO_PORT_B_7);
Here is the code to initialise the I2C driver:
C:
#define VOS_DEV_I2C 5
VOS_HANDLE hI2C;
// IOCTL request block
i2c_ioctl_cb_t i2c_iocb;
// Structure for defining ports
i2c_port_t i2c_port;
// For testing
unsigned char buf[32];
unsigned int red;
// Define the I2C pins
i2c_port.clkPort = I2C_PORT_B;
i2c_port.clkPortNo = 14; // For pin 15
i2c_port.dataPort = I2C_PORT_B;
i2c_port.dataPortNo = 13; //For pin 14
i2c_device_init(VOS_DEV_I2C, &i2c_port);
// Open I2C Interface
hI2C = vos_dev_open(VOS_DEV_I2C);
// Set i2c options
i2c_iocb.ioctl_code = VOS_IOCTL_I2C_SET_OPTIONS;
i2c_iocb.data = I2C_OPTIONS_READ_ADDRESS;
vos_dev_ioctl(hI2C, &i2c_iocb);
// Set rtc address
i2c_iocb.ioctl_code = VOS_IOCTL_I2C_SET_DEVICE_ADDRESS;
i2c_iocb.data = 0x68;
vos_dev_ioctl(hI2C, &i2c_iocb);
// Set the address to read from
i2c_iocb.ioctl_code = VOS_IOCTL_I2C_SET_RDWR_ADDRESS;
i2c_iocb.data = 0x10;
vos_dev_ioctl(hI2C, &i2c_iocb);
To read four bytes from the RTC Chip, i use this:
C:
vos_dev_read(hI2C, buf, 4, &red);
But nothing happen on my scope, signals are at 0v.
Where can be the problem ? Does someone has an example on how to use this I2C driver ?
Thanks,
Willy.