刘
examples\none_evm\ble_drivers_demo\proj 下#include "driver_system.h"
#include "driver_iomux.h"
#include "driver_iic.h"
static const uint8_t LSM6DS33_ADDR = (0x6B<<1);
void demo_i2c(void)
{
uint8_t i2c_test_no = 0;
uint8_t buff1[6];
uint8_t buff2[6];
co_printf("IIC demo\r\n");
system_set_port_mux(GPIO_PORT_D, GPIO_BIT_6, PORTD6_FUNC_I2C1_CLK);//Pc6
system_set_port_mux(GPIO_PORT_D, GPIO_BIT_7, PORTD7_FUNC_I2C1_DAT);//Pc7
system_set_port_pull( (GPIO_PD6|GPIO_PD7), false);
//IIC1, 1M hz. slave addr: 0xd6
iic_init(IIC_CHANNEL_1,1000,LSM6DS33_ADDR);
iic_write_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x15,0x00);
iic_write_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x16,0x00);
iic_write_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x10,0x80);
iic_write_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x11,0x80);
iic_write_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x12,0x04);
while(1)
{
for(uint8_t i=0; i<6; i++)
{
iic_read_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x28+i,&buff1[i]);
iic_read_byte(IIC_CHANNEL_1,LSM6DS33_ADDR,0x22+i,&buff2[i]);
}
co_printf("X:%d |Y:%d |Z:%d\r\n",*(uint16_t *)buff1,*(uint16_t *)(buff1+2),*(uint16_t *)(buff1+4));
co_printf("AccX:%d|Acc_Y:%d|Acc_Z:%d\r\n",*(uint16_t *)buff2,*(uint16_t *)(buff2+2),*(uint16_t *)(buff2+4));
i2c_test_no++;
if(i2c_test_no>3)
break;
}
}