DSPS时间需要从边缘中断中醒来。

6个员额/ 0个新员额
最后发表
joanquark
离线
最后看到:4年10个月前
加入:2015-06-01 08:59
DSPS时间需要从边缘中断中醒来。

我认为我在BLE .bin上犯了一个错误,我做了引导,所以peripher_init仍然不能工作
我试着:
if (GPIO_GetPinStatus(GPIO_PORT_0, GPIO_CTRL) == false){
/ /下降沿
AdvLen = 0;
SetBits16 (CLK_CTRL_REG SYS_CLK_SEL 0);//选择XTAL 16MHz
SetBits16 (CLK_16M_REG RC16M_ENABLE 0);//节省16MHz的RC电源
SetBits16 (CLK_RADIO_REG BLE_ENABLE 1);//启动BLE时钟
SetBits16 (PMU_CTRL_REG RADIO_SLEEP 0);/ /启动!注意:系统必须在16MHz下运行时,启动RADIO_PD。
set_pad_functions ();
uart_sps_init (UART_SPS_BAUDRATE 3);

但是它不工作,我只能使它工作后,BLE执行一个广告,从这一刻(如你所说的SLP_handled) uart接收数据
我已经尝试在GPIO回调中调用这个处理程序的一些代码,但不能使它工作

在我的情况下你会调用什么函数?

问候

设备:
joanquark
离线
最后看到:4年10个月前
加入:2015-06-01 08:59
这个顺序也不一样

如果之后发布了一个广告,这个序列也不起作用:

if (GPIO_GetPinStatus(GPIO_PORT_0, GPIO_CTRL) == false){
/ /下降沿
AdvLen = 0;
SetBits16 (CLK_CTRL_REG SYS_CLK_SEL 0);//选择XTAL 16MHz
SetBits16 (CLK_16M_REG RC16M_ENABLE 0);//节省16MHz的RC电源
/ / 1。打开外设的电源域
periph_init ();
app_default_sleep_mode == ARCH_EXT_SLEEP_ON
arch_disable_sleep ();/ / arch_force_active_mode ();
//设置中断检测GPIO_CTRL上升沿
GPIO_EnableIRQ(GPIO_PORT_0, GPIO_CTRL, GPIO0_IRQn, 0,1,0);

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨joanquark,

嗨joanquark,

尝试调用arch_ble_force_wake_up(),以便调用LP和SLP处理程序唤醒BLE并校准晶体,不要在ISR中做任何晶体操作,让BLE处理程序来处理它。在执行SLP之后,您就可以使用580的外围设备了。

由于MT_dialog

joanquark
离线
最后看到:4年10个月前
加入:2015-06-01 08:59
我说:

我说:

if (GPIO_GetPinStatus(GPIO_PORT_0, GPIO_CTRL) == false){
/ /下降沿

AdvLen = 0;
arch_ble_force_wakeup ();
app_default_sleep_mode == ARCH_EXT_SLEEP_ON
arch_disable_sleep ();/ / arch_force_active_mode ();
//设置中断检测GPIO_CTRL上升沿
GPIO_EnableIRQ(GPIO_PORT_0, GPIO_CTRL, GPIO0_IRQn, 0,1,0);

并且仍然不起作用,直到下一次广告事件发生

joanquark
离线
最后看到:4年10个月前
加入:2015-06-01 08:59
补充一下,我已经试过了

补充一下,我已经尝试了很多次延迟,但仍然没有工作,功率分析器没有显示明显的变化,所以我假设根本没有ble的功率提升。
检查连接

MT_dialog
离线
最后看到:2个月1个星期前
工作人员
加入:2015-06-08 34
嗨joanquark,

嗨joanquark,

你不会看到任何大规模的改变当你祝福的核心力量,原因你应该调用BLE权力是修剪你的XTAL16为了得到有效的uart数据(目前你不做广告或做任何无线电活动为了见更大的权力),虽然从你的图片我可以看到中断支安打,但我不能看到任何禁用睡眠,似乎发生睡眠瘫痪之后下一个广告活动,您可以将一个arch_set_pxact_gpio()在中断程序和检查如果条件执行(GPIO_GetPinStatus (GPIO_PORT_0 GPIO_CTRL) = = false)。同样,DSPS实现了流量控制,当广告它切换它的RTS,信号外部MCU发送或不发送数据,DSPS允许数据发送的窗口是当它是广告,也许你看不到任何数据到达的原因是这个。在DSPS 580将获得数据,而广告时,当它醒来,因为外部MCU将看到其CTS低,并将发送它在特定的时间,即当设备醒来,以广告。

由于MT_dialog