I2C在灯塔参考设计中

8个帖子/ 0新
最后一篇
krutarth.
离线
最后一次露面:5年4个月前
加入:2015-07-09 19:57
I2C在灯塔参考设计中

你好,
我想使用带有I2C接口的传感器以及信标。我正在使用信标参考设计作为我的起点。虽然每当我尝试为I2C总线配置引脚时,烽火台因未知原因停止广告。我在信标参考设计中所做的唯一变更是在函数set_pad中的periph_setup.c中,其中分配外设引脚以用于信标参考设计。所做的更改是:
//代码片段开始
void set_pad_functions(void)//设置GPIO端口功能模式
{

#if(cfg_hw_config == hw_config_smarttag)
gpio_configurepin(gpio_port_1,gpio_pin_4,input_pulldown,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_6,输出,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_5,输入,pid_gpio,false);
if(!sys_startup_flag)
gpio_configurepin(gpio_port_1,gpio_pin_5,输出,pid_gpio,false);//绿色LED关闭以降低功耗

gpio_configurepin(gpio_port_0,gpio_pin_0,input_pullup,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_3,input_pullup,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_1,input_pullup,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_2,input_pullup,pid_gpio,false);
#elif(cfg_hw_config == hw_config_dk)
gpio_configurepin(gpio_port_1,gpio_pin_1,input_pullup,pid_gpio,false);// push_button.
#elif(cfg_hw_config == hw_config_pvcell)
gpio_configurepin(gpio_port_0,gpio_pin_0,input_pulldown,pid_gpio,false);
gpio_configurepin(gpio_port_0,gpio_pin_3,input_pulldown,pid_gpio,false);
#elif(cfg_hw_config == hw_config_smarttag2)

gpio_configurepin(gpio_port_0,gpio_pin_1,输出,pid_gpio,false);//蜂鸣器 -
gpio_configurepin(gpio_port_1,gpio_pin_0,输出,pid_gpio,false);//蜂鸣器+
gpio_configurepin(gpio_port_1,gpio_pin_1,input_pulldown,pid_gpio,false);// push_button.
gpio_configurepin(gpio_port_0,gpio_pin_2,输出,pid_gpio,false);// 引领

gpio_configurepin(spi_gpio_port,spi_cs_pin,输出,pid_spi_en,true);
gpio_configurepin(spi_gpio_port,spi_clk_pin,输出,pid_spi_clk,false);
gpio_configurepin(spi_gpio_port,spi_do_pin,输出,pid_spi_do,false);
gpio_configurepin(spi_gpio_port,spi_di_pin,输入,pid_spi_di,false);

gpio_configurepin(gpio_port_0,gpio_pin_7,输出,pid_gpio,false);// spi_pe.

#elif(cfg_hw_config == hw_config_beacon_ref)
#ifdef cfg_spi_flash.
gpio_configurepin(spi_gpio_port,spi_cs_pin,输出,pid_spi_en,true);
gpio_configurepin(spi_gpio_port,spi_clk_pin,输出,pid_spi_clk,false);
gpio_configurepin(spi_gpio_port,spi_do_pin,输出,pid_spi_do,false);
gpio_configurepin(spi_gpio_port,spi_di_pin,输入,pid_spi_di,false);
#万一

gpio_configurepin(i2c_gpio_port,i2c_scl_pin,输入,pid_i2c_scl,false); /////这是我添加的新行
gpio_configurepin(i2c_gpio_port,i2c_sda_pin,输入,pid_i2c_sda,false); /////这是我添加的新行
#万一
}
//代码片段结束

是的,我已将i2c_gpio_port定义为端口0,i2c_scl_pin为p0.6和i2c_sda_pin作为p0.7,因此为什么要添加这两条线时的信标停止广告?有没有办法使用带信标参考设计的I2C驱动程序?

感谢致敬,

关键词:
设备:
mt_dialog.
离线
最后一次露面:1个月3周前
职员
加入:2015-06-08 11:34
嗨Krutarth,

嗨Krutarth,

请检查灯架参考设计的各种配置,也许在某处有一个有关的内容,这取决于您的硬件配置。并在使用之前保留了GPIO引脚吗?如果存在冲突,这将给出线索。

谢谢mt_dialog.

krutarth.
离线
最后一次露面:5年4个月前
加入:2015-07-09 19:57
谢谢你的建议

谢谢你的建议mt_dialog。我尝试保留GPIO PIN,我有点困惑。如果你可以澄清我的混乱,这将有助于很多。当我写这些线条来保留GPIO时
//代码片段开始
保留_GPIO(SPI_CLK,I2C_GPIO_PORT,I2C_SCL_PIN,PID_I2C_SCL);
保留_GPIO(SPI_DI,I2C_GPIO_PORT,I2C_SDA_PIN,PID_I2C_SDA);
//代码片段结束
该代码正常工作,但如果我在下面显示的更改,它会停止工作,我不知道为什么。
//代码片段开始
保留_gpio(i2c_scl,i2c_gpio_port,i2c_scl_pin,pid_i2c_scl);
保留_gpio(i2c_sda,i2c_gpio_port,i2c_sda_pin,pid_i2c_sda);
//代码片段结束

我也使用I2C总线使用定义的常量SPI_CLK和SPI_DI有所作为?请通过此引导我。

感谢致敬,

mt_dialog.
离线
最后一次露面:1个月3周前
职员
加入:2015-06-08 11:34
嗨Krutarth,

嗨Krutarth,

据我所知,这不应该有任何区别,保留_GPIO中的名称参数只是一个名称,并且在宏保留_gpio中没有任何函数。你提到的是听起来很奇怪。

谢谢mt_dialog.

krutarth.
离线
最后一次露面:5年4个月前
加入:2015-07-09 19:57
对不起,我还有另一个

对不起,还有另一部分代码创造了它的问题
//代码片段开始
wait_until_i2c_fifo_is_empty();
//代码片段结束
现在我正在使用Pan1740评估套件,并且在总线上没有I2C设备。所以,如果调用此宏,它将结束一个无端的等待循环?我可以在不使用此宏的情况下使用I2C吗?我计划在使用固件完成后连接设备。

感谢致敬,

mt_dialog.
离线
最后一次露面:1个月3周前
职员
加入:2015-06-08 11:34
嗨Krutarth,

嗨Krutarth,

是的,这个宏将在循环中以无限的循环结束。如果您删除它,我们无法判断会发生什么,您应该使用驱动程序,并测试您的固件。

谢谢mt_dialog.

krutarth.
离线
最后一次露面:5年4个月前
加入:2015-07-09 19:57
嗨对话框,

嗨对话框,
我一直在尝试使用SDK提供的驱动程序来使用I2C从传感器读取温度数据。温度数据为2个字节,并存储在单个地址0x00中,我难以读取第二个字节,因为您在发送地址后的驱动程序中读取单个字节的所有功能。温度传感器为单个地址发送2个字节的数据。你能告诉我一个解决方案来持续为单个地址读取两个字节的数据。

感谢致敬,

krutarth.
离线
最后一次露面:5年4个月前
加入:2015-07-09 19:57
关闭此票证问题

关闭此票证在另一个线程中已解决。

感谢致敬,

主题锁定