你好,
我们希望定期读取i2c上的传感器,最好是在da14585醒来执行BLE广告时。
读取传感器,就必须首先通过驱动销高唤醒传感器,等待1ms的〜,然后读取8个字节的数据通过I2C。
这个序列的工作方式本身,而是当我试图做到这一点无论是在回调user_app_main_loop_callbacks.app_on_system_powered或user_app_main_loop_callbacks.app_before_sleep我卡住莫名其妙。
顺序初始化是从periph_init称为I2C:
空隙init_acc_i2c(无效)
{
SetBits16 (CLK_PER_REG I2C_ENABLE 1);//启动I2C时钟
SetWord16 (I2C_ENABLE_REG 0 x0);//关闭I2C控制器
SetWord16(I2C_CON_REG,0x0063);// 12c中主,7位从地址,100Kbit的
设置字16(I2C_TAR_REG,加速度计I2C_ADDR);
SetWord16(I2C_ENABLE_REG,为0x1);//启用I2C控制器
}
读取传感器数据的代码,我试图从上面描述的回调调用:
空白read_sensor_sequentially(空白)
{
INT I;
uint8_t数据[8];
GPIO_SetActive(ACCELEROMETER_ENABLE_PORT,ACCELEROMETER_ENABLE_PIN);
systick_wait(1000);
GLOBAL_INT_DISABLE();
SetWord16(I2C_DATA_CMD_REG,0×00);
(我= 0;< 7;我+ +)
{
WAIT_WHILE_I2C_FIFO_IS_FULL();
SetWord16(I2C_DATA_CMD_REG,0100);
}
GLOBAL_INT_RESTORE();
(我= 0;< 7;我+ +)
{
等待接收到的字节()等待接收到的数据
数据[I] =(0xFF的&GetWord16(I2C_DATA_CMD_REG));//获取接收的字节
}
GPIO_SetInactive(ACCELEROMETER_ENABLE_PORT,ACCELEROMETER_ENABLE_PIN);
WAIT_UNTIL_I2C_FIFO_IS_EMPTY();//等待,直到发送FIFO为空
WAIT_UNTIL_NO_MASTER_ACTIVITY();//等到无主活动
}
是否有可能使用任何回调,以达致这?
致以最亲切的问候
马丁
嗨mapart,
在读取传感器周期性您可以使用app_easy_timer()API的情况下。每次计时器到期时,注册的回调将被触发,所以你需要注册,你正在阅读的传感器回调。在读取传感器每次在DA1458,请您分享更多的细节时情况?器件进入adverting或连接间隔之间的睡眠模式。你配置它进入深度睡眠模式,因为它演示了SDK的ble_app_sleepmode例子吗?
谢谢,PM_DIALOG.
你好,
为了提供一些背景:
SDK版本,6.0.10.511。
我们使用ble_app_security作为这个项目的基础,但其配置为使用扩展的睡眠模式。这使得设备的广告之间进入睡眠。
理想情况下,我们希望每个da14585醒来做了广告时间阅读本传感器。
如果我们使用app_easy_timer(),设备将从睡眠中醒来,只是为了读取传感器,对吗?
对我们来说,最好是在设备已经唤醒时读取传感器读数。
致以最亲切的问候
马丁
嗨mapart,
通过使用app_easy_timer(),可以实现对传感器的周期性读取。你的设备最初是广告的,当它的广告传感器应该被应用程序定期读取,在一段时间后,你停止广告,当设备通过配置唤醒控制器醒来时,应用程序应该开始再次定期读取传感器。那是正确的吗?或者你想在每个广告间隔读取传感器?请让我知道并分享你到底想要完成什么。为了给你提供正确的指导方针,这将是非常有帮助的。
谢谢,PM_DIALOG.
你好,
是的,我想读传感器在每一个广告的时间间隔(687.5毫秒)。
我想我设法通过使用回调来实现:
user_app_main_loop_callbacks.app_on_system_powered
谢谢你的帮助。
此致
马丁
嗨mapart,
很高兴与你想通发出并感谢您接受的答案。
谢谢,PM_DIALOG.
你好,对话框,
一个类似的例子与另一个工作流-
传感器>> I2C >> DA14586。
RTC >> GPIOx / WKUP中断>> DA14586
BLE会按照SDK提供的样例应用进行广告的正常操作。亚博国际官网平台网址
当一个中断是由RTC和BLE提出仍处于广告模式 -
记录时间戳;记录的传感器数据;在闪速存储传感器数据;
当BLE连接到peer -
禁用RTC中断;将Flash数据通过BLE传输到中央设备(通常是智能手机);
你能帮我插入和处理代码吗-
1. RTC中断处理(活动和睡眠状态)
2 .使用Dialog中的DSPS进行BLE传输。
谢谢
嗨rajucoolsuraj,
如果我能正确理解,你想唤醒设备时得到一个中断正确吗?因此,设备将处于睡眠模式,当你从RTC(请澄清什么是RTC)获得中断时,设备将唤醒并开始广告。如果您想遵循这个实现,我建议您看看SDK的ble_app_sleepmode示例。唯一的区别是,在本例中,DA14585/6从按下按钮生成的中断中唤醒。您是在使用DSPS应用程序代码还是已经开发了自定义应用程序?请检查DSPS应用程序代码中的user_send_ble_data()。另外,我建议您查看一下DSPS用户手册,并检查图6和图7。
https://support.dialog-semiconductor.com/system/files/resources/UM-B-038%20DA14580%20Serial%20Port%20Service%20reference%20application_v2.0.pdf
谢谢,PM_DIALOG.
谢谢对话,
我想,以评估和后回到这里。
我还提出了关于I2C控制器与传感器接口的另一个帖子。
似乎控制器在SDA线上发送了从设备地址后没有发送备用设备的寄存器地址。
我能在这方面得到帮助吗?
谢谢
拉朱
HONEYWELL
嗨rajucoolsuraj,
我已经回复你在这个论坛主题:
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-软件/rtc-pcf85063a-i2c-using-i2ceeprom-api
谢谢,PM_DIALOG.
谢谢对话,
但是,当我想启用GPIO IRQ没有睡眠模式。
当对等体连接之前,我应该处理的中断;当PERIPH是广告?
谢谢
拉朱
嗨rajucoolsuraj,
您可以启用在初始化(.app_on_init)或user_app_adv_start的IRQ。但要注意,你必须以检测中断不使用任何睡眠模式。如果你想有任何睡眠模式的配置,你应该使用唤醒控制器。
谢谢,PM_DIALOG.
谢谢对话,
我将在激活和睡眠模式中使用WakeUp IRQ。它似乎比GPIO更好。
如果有可能导致通过GPIO使用的WakeUp IRQ的任何错误的相遇,我想知道它
谢谢
嗨rajucoolsuraj,
我强烈建议查看一下SDK的ble_app_sleepmode示例,以便了解如何使用唤醒控制器。
谢谢,PM_DIALOG.
你好,对话框,
当在自定义消息处理程序连接为按钮回调唤醒控制器的使用是最好的用例的例子。
如果在实现过程中出现任何逻辑故障,我将返回。
谢谢
嗨rajucoolsuraj,
如果你想要任何一种睡眠模式,解决方案是使用唤醒控制器来检测中断和唤醒。请检查app_button_enable()函数,该函数在设备进入睡眠模式之前启用唤醒控制器。可以使用wkupct_enable_irq()函数选择可以检测唤醒中断的GPIO。您还可以配置极性和恢复时间以及。由于设备进入睡眠状态,你向唤醒控制器发送一个中断,注册到wkupct_register_callback()的回调函数将被触发。
谢谢,PM_DIALOG.
你好,对话框,
我已经注册使用的WakeUp控制器回调注册多个回调,如何从多个GPIO的中断服务?
它是最后一个中注册的GPIO的触发?
谢谢
问候
拉朱
嗨rajucoolsuraj,
能否请你澄清你做了什么?如果我能够正确理解,您配置固件从不同的GPIO醒了吗?如果是的话,先上会唤醒你的芯片了。
谢谢,PM_DIALOG.
你好,对话框,
谢谢
另外,如何通过唤醒控制器检查触发中断的GPIO管脚源?
是否有任何寄存器或者,让我来验证中断源SDK任何机制?
谢谢
拉朱
嗨rajucoolsuraj,
没有寄存器,将指示端口/引脚中断发生,你可以为了检查脉冲源做的是阅读的销权地位的设备已被唤醒后。因此,根据引脚的状态,你将必须决定哪些回调函数将被触发。敬请尽量不要重复你在论坛上的问题,你已经创建了一个类似的论坛主题,我已经回答您有:
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-software/multiple-code-space-wkupenableirq
谢谢,PM_DIalog
你好,对话框,
很抱歉,有重复。是的,谢谢你的支持。
此外,我还就这一问题提出了另一个关切。
问候
拉朱
嗨rajucoolsuraj,
没问题!让我们继续在其他论坛主题对话。
谢谢,PM_DIALOG.