4 posts / 0 new
Last post
ziv324
Offline
Last seen:1 month 1 week ago
加入:2016-01-08 07:36
DA14580外部喚醒問題

使用的範例是ble_app_all_in_one

這可範例可以使用外部button讓停止的廣播喚醒

在user_app_button_press_cb裡面增加LED的亮或滅的狀態顯示。

把程式設定成ARCH_SLEEP_OFF

LED會隨著每一次的按按鍵而做亮或滅的變化,連續按也沒有問題。

當把程式設定更改為ARCH_EXT_SLEEP_ON

LED的亮滅轉態變成並不是每一次的按鍵都會出現,沒有固定時間或次數的規律。

程式並沒有進入user_app_button_press_cb。

請問這是哪裡的設定要更改?

Device:
CYibin
Offline
Last seen:4 months 3 weeks ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

请确认:

1. Firmware 运行在官方的开发板还是?是 debug 运行还是 burn 到 flash 后运行?

2. 是否是 SDK5.0.4?

3. 贴上你的 user_app_button_press_cb 的内容?

4. 我们知道,只有当蓝牙处于连接状态时,按按键才会回调 user_app_button_press_cb,当你在测试时,蓝牙是否保持着连接?

5. 相对于 SDK 中的 all_in_one 工程,请列出所有你对该工程的一些改动?

ziv324
Offline
Last seen:1 month 1 week ago
加入:2016-01-08 07:36
首先,謝謝您的回覆。

首先,謝謝您的回覆。

請先允許我進一步補充問題內容
這各功能是為了實現I2C的溝通,DA14580為I2C Master,另外有一顆MCU為I2C Slave。
在測試I2C奴隶端要求讀取資料時,發出GPIO我nterrupt後,DA14580不一定會去讀取Slave端的資料。

以下是回覆問題:
1. 開發板是官方的Basic版本。運行方式是burn到flash後運行。
2. SDK為5.0.4
3. 詳細請看附件檔案內容
4. 目前測試都是藍芽處於連線狀態,不過最終要實現非連接狀態時也能動作。
5. 詳細請看附件檔案內容

Attachment:
CYibin
Offline
Last seen:4 months 3 weeks ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

从你的代码中,由于有调用 wkupct_enable_irq 的函数(user_app_set_i2c_int_event 和 app_i2c_int_enable)都被你注释掉了,所以,我们无法获知你的问题出在哪里。

请按照以下步骤实现 io 中断功能:

1. 实现两个函数:

void app_gpio_wakeup_int_callback(void) // callback when gpio wake the system up { // peripheral init // do somthing quickly app_gpio_wakeup_int_enable(); } void app_gpio_wakeup_int_enable(void) // enable wakeup from external gpio { wkupct_disable_irq(); wkupct_register_callback(app_gpio_wakeup_int_callback); wkupct_enable_irq(); }

2. 在 user_app_init (或根据需要)中第一次调用 app_gpio_wakeup_int_enable()

需要注意的是:

1. 保证系统里只有一处调用 wkupct_enable_irq。当连续调用 wkupct_enable_irq 两次时,会只执行后面的调用

2. app_gpio_wakeup_int_callback 中不能处理太多事情。也不能处理串口、IIC等外设的接收。外设接收的处理,可以放在 app_easy_wakeup(); 接口中,具体可参照 all_in_one 工程的实现