CN / EN
CN / EN

gr551x(主机)使用i2c和其他模块(从机)通信时,主机无应答 GR551x

135***330

2024-03-20 14:41

1.本人所用产品是RG5515的蓝牙芯片

2.使用的程序是GR551X_SDK V1.7.0下的peripheral_app\i2c\app_i2c

3.本人在和外设使用I2C通信时,GR5515始终为主机,外设始终为从机,主机想要通过I2C读取外设寄存器内容,要求时序如下

但是在从机返回REGDART之后,主机并没有给出ACK的信号,给的是NACK,并且在程序里面app_i2c_receive_sync函数也接收不到数组的内容。(使用同步方式)

此时对应示波器波形如下:在接收到0x01后,主机(gr5515没有应答)

完整读取时序如下:下图中0x01的部分展开后就是上图


4.程序设置如下:

#define MASTER_DEV_ADDR 0x4D

#define SLAVE_DEV_ADDR 0x55

#define DEFAULT_IO_CONFIG {{ APP_IO_TYPE_NORMAL, APP_IO_MUX_1, I2C_SCL_PIN, APP_IO_PULLUP },\

{ APP_IO_TYPE_NORMAL, APP_IO_MUX_1, I2C_SDA_PIN, APP_IO_PULLUP }}

#define DEFAULT_MODE_CONFIG { APP_I2C_TYPE_POLLING, DMA_Channel0, DMA_Channel1 }

#define DEFAULT_I2C_CONFIG { I2C_SPEED_100K, MASTER_DEV_ADDR, I2C_ADDRESSINGMODE_7BIT, I2C_GENERALCALL_DISABLE }

#define DEFAULT_PARAM_CONFIG { APP_I2C_ID_1, APP_I2C_ROLE_MASTER, DEFAULT_IO_CONFIG, DEFAULT_MODE_CONFIG, DEFAULT_I2C_CONFIG }


初始化:

app_i2c_params_t params_t = DEFAULT_PARAM_CONFIG;

params_t.use_mode.type = APP_I2C_TYPE_POLLING;

ret = app_i2c_init(&params_t, app_i2c_evt_handler);


函数调用:

ntag->tx_buffer[0] = NTAG_MEM_BLOCK_SESSION_REGS;

ntag->tx_buffer[1] = reg;

/* send block number */

uint16_t ret = app_i2c_transmit_sync(APP_I2C_ID_1, SLAVE_DEV_ADDR, ntag->tx_buffer, 2, 0xffff);

ntag->rx_buffer[0] = 0x00;

app_i2c_receive_sync(APP_I2C_ID_1, SLAVE_DEV_ADDR, ntag->rx_buffer, 1, 0xffff);

接收到的ntag_rx_buffer没有内容


请问是哪一个环节有问题?

0收藏

0赞成

zhongchengzhi

汇顶员工
2024-03-20 16:12

您好,app_i2c_receive_sync的返回值是多少呢?

1条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注