这边需要闪光存储当前的设备名称,设mac修改,发布闪存无法对变进行存储,应该是我的使用方便不行,能能我在延伸睡眠状态模式下使用闪光,另外给我发表,在存储绑定信仰,当闪光法工作的时代,我签用bond_db_store_ext()后,设备自动打开连接,应该是flash anys正常工作组,我把这频闭后后能正常连接。
flash初始化代码如下:
空白spi_flash_peripheral_init(空白)
{
spi_FLASH_CS_Pad。销= SPI_CS_PIN;
spi_flash_cs_pad.port = spi_gpio_port;
//启用SPI & SPI FLASH
spi_init(&spi_FLASH_CS_Pad, SPI_MODE_8BIT, SPI_ROLE_MASTER, SPI_CLK_IDLE_POL_LOW, SPI_PHA_MODE_0, SPI_MINT_DISABLE, SPI_XTAL_DIV_8);
/ / detected_spi_flash_device_index = spi_flash_auto_detect ();
// if(detected_spi_flash_device_index == SPI_FLASH_AUTO_DETECT_NOT_DETECTED)
/ / {
//设备未被识别。
//使用默认参数(SPI_FLASH_SIZE, SPI_FLASH_PAGE)
//或者,错误可以在这里断言。
spi_flash_init (SPI_FLASH_DEFAULT_SIZE SPI_FLASH_DEFAULT_PAGE);
/ /}
spi_flash_release_from_power_down ();
spi_cs_low ();
spi_cs_high();
}
希望能尽快得到解决。
非常感谢。
你好,
你的描述中包含太多情况的说明,我们先把这些情况缕清一下?
1、你的硬件环境是官方的开发板吗?如果不是,flash型号是什么?
2,你的软件,能在官方开发板上正常运行吗?
3,不使能睡眠模式(延长睡眠),当前闪光可以读、写数据吗?
4、使能睡眠模式(延长睡眠)之后,flash是否还可以读写吗?
5,调用bond_db_store_ext()之后,设备自动断开连接,是设备死机了吗?蓝牙是否还有广播?
你好,CYibin
1,我使用的是自定义板子,闪信号为w25x10。
2,我使用官方的SDK5.0.4中的spi_flash例程是能够对闪进行操作的。
3,我尝试不在睡眠模式下使用flash,发现也没有成功,应该是需求方例程的原因,我使用演示板单独将flash添加在需求方例程,将代码下在flash,初始化后清除所有flash数据,发现flash数据还在,应该是我没有正确的对闪进行操作。
可以是我是在dsps下闪存的下面闪神,我是,能告诉我如何正式的在DSPs手程下对闪光行作业吗。
system_init();
spi_flash_peripheral_init();
spi_cs_low ();
spi_cs_high();
/ /擦除闪存
spi_flash_chip_erase ()
空白spi_flash_peripheral_init ()
{
spi_FLASH_CS_Pad。销= SPI_CS_PIN;
spi_flash_cs_pad.port = spi_gpio_port;
//启用SPI & SPI FLASH
spi_init(&spi_FLASH_CS_Pad, SPI_MODE_8BIT, SPI_ROLE_MASTER, SPI_CLK_IDLE_POL_LOW, SPI_PHA_MODE_0, SPI_MINT_DISABLE, SPI_XTAL_DIV_8);
detected_spi_flash_device_index = spi_flash_auto_detect ();
/ /如果(detected_spi_flash_device_index = = SPI_FLASH_AUTO_DETECT_NOT_DETECTED)
/ / {
//设备未被识别。
//使用默认参数(SPI_FLASH_SIZE, SPI_FLASH_PAGE)
//或者,错误可以在这里断言。
spi_flash_init (SPI_FLASH_SIZE SPI_FLASH_PAGE);
/ /}
}
int8_t spi_flash_chip_erase(空白)
{
uint8_t状态;
if(spi_flash_set_write_enable()!= err_ok)//发送[写入启用]指令
返回ERR_TIMEOUT;
spi_set_bitmode (SPI_MODE_8BIT);
spi_transaction (CHIP_ERASE);//芯片擦除命令
状态= spi_flash_wait_till_ready ();
返回状态;
}
希望能尽快得到解决。
非常感谢。
你好,
是否有引出jtag接口,通过单步调试,看flash操作卡在了哪一步?
我使用官方的板子进行调试,发现一样在需求方例程下无法使flash工作。
1,通过单步调试,我发现官方的spi_flash例程中,spi_flash_chip_erase()这句函数执行时间相较于需求方例程短很多。
2,在DSPS过程中,进入SPI_FLASH_CHIP_ERASE()参数后,经常会卡在(getBits16(SPI_CTRL_REG,SPI_INT_BIT)== 0);//调查等待SPI传输,通过单击突破后,又能继续,执行很长一段时空后后后执行完spi_flash_chip_erase()。
3, spi_flash例程能够在执行完spi_flash_chip_erase()后将flash的内容全部删除,而需求方例程毫无反应。
我在需求方例程中添加了如下代码:
闪光闪光IO口
Void set_pad_functions(Void) //设置gpio端口功能模式
{
/ *
*配置应用程序端口。
即。
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_1, OUTPUT, PID_GPIO, false);//设置P_01为通用目的输出
*/
gpio_configurepin(gpio_uart1_tx_port,gpio_uart1_tx_pin,输出,pid_uart1_tx,false);
GPIO_ConfigurePin(GPIO_UART1_RX_PORT, GPIO_UART1_RX_PIN, INPUT_PULLUP, PID_UART1_RX, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_CS_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_CLK_PIN, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_DO_PIN, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(SPI_GPIO_PORT, SPI_DI_PIN, INPUT, PID_SPI_DI, false);
#如果(UART_HW_FLOW_ENABLED)
GPIO_ConfigurePin(GPIO_UART1_RTS_PORT, GPIO_UART1_RTS_PIN, OUTPUT, PID_UART1_RTSN, false);
GPIO_ConfigurePin(GPIO_UART1_CTS_PORT, GPIO_UART1_CTS_PIN, INPUT_PULLUP, PID_UART1_CTSN, false);
# endif / / UART_HW_FLOW_ENABLED
#ifdef cfg_printf_uart2.
gpio_configurepin(gpio_uart2_tx_port,gpio_uart2_tx_pin,输出,pid_uart2_tx,false);
GPIO_ConfigurePin(GPIO_UART2_RX_PORT, GPIO_UART2_RX_PIN, INPUT, PID_UART2_RX, false);
# endif
}
主函数
int main_func(空白)
{
sleep_mode_t sleep_mode;
/ /全局初始化
system_init();
spi_flash_peripheral_init();
spi_cs_low ();
spi_cs_high();
/ /擦除闪存
spi_flash_chip_erase ();
/ *
************************************************************************************
*平台初始化
************************************************************************************
*/
而(1)
{
{做
//调度所有挂起的事件
schedule_while_ble_on ();
}
而((app_asynch_proc ()));//授予控制给应用程序,尝试去断电
//如果应用返回GOTO_SLEEP
/ / ((STREAMDATA_QUEUE) & & stream_queue_more_data ()));//将控制权授予streamer,尝试去power down
//如果应用返回GOTO_SLEEP
//如果允许的话,等待中断并进入睡眠状态
如果(((! BLE_APP_PRESENT) & & (check_gtl_state ())) | |
(ble_app_present))
{
/ /禁用中断
GLOBAL_INT_STOP ();
app_asynch_sleep_proc();
//获取允许的睡眠模式
//从rwip_power_down()到WFI()的时间必须尽可能短!!
sleep_mode = rwip_power_down ();
If (sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep);
//关掉收音机和任何允许的东西
arch_goto_sleep (sleep_mode);
//等待中断恢复操作
注射用水();
/ /恢复操作
ARCH_RESUME_FROM_SLEEP();
}
Else if (sleep_mode == mode_idle)
{
if (((!BLE_APP_PRESENT) && check_gtl_state()) ||
(ble_app_present))
//等待中断恢复操作
注射用水();
}
/ /恢复中断
global_int_start();
}
如果(USE_WDOG)
wdg_reload(watchdog_default_period);
}
}
关闭睡眠
#undef cfg_mem_map_ext_sleep.
# undef CFG_MEM_MAP_DEEP_SLEEP
关闭开门狗
# undef CFG_WDOG
关键词模式
# undef CFG_DEVELOPMENT_DEBUG
你好,
关闭睡眠的方式不对,应该是const静态sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
请尝试后回复结果
关键词尝试也不行,可以给我一击闪光在DSPS过程下成成都使嘛,闪光灯,闪光灯,为W25X10。
不好,目前官方无所无息可所提问题没解决释放。若问题还没解决,你可爱地地理解商寻求技术支持