I2C in Beacon Reference Design

8篇文章s / 0 new
最后一篇
krutarth.
离线
最后一次露面:5 years 4 months ago
加入:2015-07-09 19:57
I2C in Beacon Reference Design

你好,
我想使用带有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, OUTPUT, 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, OUTPUT, PID_GPIO, false); // GREEN LED OFF TO REDUCE POWER CONSUMPTION

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, OUTPUT, PID_GPIO, false); // BUZZER+
gpio_configurepin(gpio_port_1,gpio_pin_1,input_pulldown,pid_gpio,false);// push_button.
GPIO_ConfigurePin( GPIO_PORT_0, GPIO_PIN_2, OUTPUT, PID_GPIO, false); // LED

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, INPUT, 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, INPUT, 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); /////这是我添加的新行
#万一
}
//code snippet end

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

感谢致敬,

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

嗨Krutarth,

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

谢谢mt_dialog.

krutarth.
离线
最后一次露面:5 years 4 months ago
加入:2015-07-09 19:57
Thanks for the advice MT

谢谢你的建议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);
//Code Snippet Ends
该代码正常工作,但如果我在下面显示的更改,它会停止工作,我不知道为什么。
//代码片段开始
RESERVE_GPIO( I2C_SCL, I2C_GPIO_PORT, I2C_SCL_PIN, PID_I2C_SCL);
RESERVE_GPIO( I2C_SDA, I2C_GPIO_PORT, I2C_SDA_PIN, PID_I2C_SDA);
//代码片段结束

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

感谢致敬,

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

嗨Krutarth,

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

谢谢mt_dialog.

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

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

感谢致敬,

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

嗨Krutarth,

Yes this macro will end in an endless while loop. We cant tell for sure what will happen if you just remove it, you should use the driver as is and test your firmware.

谢谢mt_dialog.

krutarth.
离线
最后一次露面:5 years 4 months ago
加入:2015-07-09 19:57
嗨对话框,

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

感谢致敬,

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

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

感谢致敬,

主题锁定