嗨对话框,
我正在使用DSP示例,我遇到了一个问题希望你能提供帮助。
我使用定时器通过SPI读取数据约1s的时间,但它在读取5或6次(附加的第1页)后停止,并且在另外10个之后,程序发生故障(第2页)。
你能帮助分析为什么吗?
我使用的例子是DSPS_DEVICE,也许使用SPI的UART中呼行冲突?如果是这样,如何停止UART?
谢谢
本杰明
关键词:
设备:
嗨Benjamindu,
τheplatform_reset_func()由platform_reset()调用,它是实现的ROM代码。您获得此断言的最可能原因是由于内存不足,因为您可能会尝试分配您永远不会消耗的消息。例如,如果要分配通知消息,并且您有一个小的连接间隔,则邮件堆叠堆积,直到连接事件到达,但在连接事件到达之前,使用大的连接间隔耗尽内存。
谢谢,PM_DIALOG.
嗨对话框,
非常感谢您的快速回复。
我的代码如附件中,似乎没有未折叠的数据。
我仍然认为spi我与UART冲突
由于UART在我的项目中没有使用,
你能帮忙告诉我如何阻止它吗?然后我可以测试UART与SPI冲突。
谢谢
(我测试SPI在其他示例中,它运作良好)
我认为spi_trabsanction是唯一一个导致冲突的原因
谢谢
本杰明
嗨Benjamindu,
设备是否从Flash或系统RAM启动?你是否连续与UART互动?我会尝试复制它。如果您可以与我分享您所做的修改,那将是非常有帮助的。
谢谢,PM_DIALOG.
嗨对话框,
从系统启动,UART之间几乎没有交互
我的重大修改如下
void timer_callback(void)
{
INT ISSS;
ISSS = SPI_TRANSACTION(0x80040001);
// ISSS =(ISSS >> 5)&0xFFFF;
// ISSS / = 64;
// ISSS = 1023;
ARCH_PRINTF(“ttttt \ t”);
}
#ifdef cfg_printf_uart2.
gpio_configurepin(2,8,输出,pid_uart2_tx,false);
gpio_configurepin(2,9,输入,pid_uart2_rx,false);
#万一
gpio_configurepin(0,0,输出,pid_spi_clk,false);
gpio_configurepin(0,2,输出,pid_spi_en,true);
gpio_configurepin(0,5,输入,pid_spi_di,false);
gpio_configurepin(0,6,输出,pid_spi_do,false);
spi_pad_t spi_cs_pad;
spi_cs_pad.pin = 2;// 2或
spi_cs_pad.port = 0;// spi_port;
spi_init(&spi_cs_pad,spi_mode_32bit,spi_rool_master,spi_clk_idle_pol_low,spi_pha_mode_0,spi_mint_disable,spi_xtal_div_8);
timer_init();
timer0_register_callback(timer_callback);
输出如下,然后它停止,大约15s,它失败了。附加是修改的整个文档。
SPSS Init.
ttttt其他msgid 3328
ttttt tttt ttttt ttttt ttttt ttttt
嗨对话框,
修改了4个文件,所有内容都在上面的.pdf只需将它们复制并粘贴到相应的文件中,然后可以测试它。
非常感谢您的帮助
本杰明
2019.10.17
嗨Benjamindu,
platform_reset_func()是由于内存不足,所以请尝试通过在da1458x_config_advanced.h标题文件中定义db_heap_sz来提高堆大小?
谢谢,PM_DIALOG.
嗨对话框,
我增加了db_heap_sz 2次和4次,但仍然崩溃,差异是db_heap_sz的较大尺寸,崩溃时间越长。
你能帮忙说在哪里使用内存吗?
你有其他方法来避免崩溃吗?
谢谢
本杰明
嗨对话框,
以前我以前使用sdk3.xuart_slave,db_heap_sz是1024,仍然很好,我按照你的建议转移到新的sdk,但它崩溃如上面的节目,我认为它是由于系列端口的串行存储器消耗,因为系列端口不是在我的项目中使用,你可以帮助建议如何停止系列港口吗?
谢谢
本杰明
嗨对话框,
也许SPI与其他中断发生冲突?
由于SPI可以很好地努力。
谢谢
本杰明
嗨Benjamindu,
问题是由于内存不足。您能否总结您完成的所有修改以便复制您的问题?DSP有UART和BLE活动,所以我不太确定这是可实现的,因为系统由于待定消息而耗尽内存。你在另一个SDK项目中复制了吗?
谢谢,PM_DIALOG.
嗨对话框,
以下3个文件修改:
Arch_main.c.
user_periph_setup.c.
da1458x_config_basic.h.
我复制了3个文件的内容及其在PDF文档中的修改,第3个由///////////////////////////////////////////////////////Benjamin添加。
我用sdk3.x uart_slave测试了相同的代码,它有效。
谢谢
本杰明10月23日。
嗨对话框,
我的项目是使用DSP来阅读Throngh Spi,我认为应该是可能的。
谢谢
本杰明
10月24日
嗨对话框,
你能给我一个回复吗?
谢谢
Benjamindu 10月25日
嗨对话框,
你说还有待定的消息,请你给出一个消息吗?
谢谢
本杰德杜
任何人都可以告诉我如何使用SPI和同时,也可以通过BLE连接?
嗨对话框,
我测试的项目是dsps_device.uvprojx,附加的修改后的3个文件
谢谢
本杰明
嗨Benjamindu,
您无法同时拥有UART和SPI活动。SDK的BLE_APP_SECURY示例使用SPI Flash N命令来存储绑定数据。请关注user_cfg_app_bond_db_use_spi_flash。为了与SPI Flash初始化和互动,我建议您使用我们的API。您也可以将SPI_FLASH示例作为参考(6.0.10.511 \ Projects \ target_apps \ peripherall_examples \ spi)。您可以澄清您对DSP和SPI闪光的要求吗?
您应该使用app_easy_timer()API。每次计时器到期时,都会触发注册的回调,因此您需要注册回调以与SPI Flash进行交互。请记住,DSP默认使用扩展睡眠模式,因此包括SPI的所有外设块都将关闭。
谢谢,PM_DIALOG.
嗨Benjamindu,
刚看到您附加的修改文件。我会尝试在干净的sps_device项目中测试它。您有定制董事会,或者您正在使用我们的任何DKS?此外,您还有另一个运行SPS_HOST固件的DA14585,还是您正在使用我们的DSP移动应用程序来连接?
谢谢,PM_DIALOG.
嗨对话框,
UART不是必须的,我用UART以一种简单的方法来输出数据来观察在调试期间的代码,但我测试了我的代码,如果我不使用UART来淘汰任何东西,那么程序仍然可以崩溃,仍然可以崩溃在Skd3.x中,我使用slave_uart和master_uart示例,UART与SPI良好。
我测试了SPI_FLASH示例,它可以与我的SPI设备交互。
我的要求是通过SPI读取数据并将数据发送到对等设备(EITH到MOBILE或SPS_HOST)
你的意思是延长睡眠模式会禁用spi吗?和spi停止,也许这就是程序崩溃的原因?
谢谢
本杰明
嗨对话框,
是的,我正在使用客户董事会。
我使用sps_host固件,我也可以使用移动应用程序,两个都可以连接到dsps_device
希望您可以测试我的代码并帮助我发现问题在哪里。
谢谢
本杰明
嗨本杰明,
在睡眠模式下,所有外围块包括I2C,UART,SPI都会断电。在DSP示例中,默认情况下,睡眠模式是扩展的睡眠模式。在UART的情况下,使用硬件流控制以便在有可用数据发送或接收时唤醒设备。你能在活动模式下尝试吗?
谢谢,PM_DIALOG.
你好,
我测试了活动模式,似乎有效,我会做更多的测试来确认它。
谢谢
本杰明
嗨本杰明,
扩展睡眠模式是问题,因为,正如我之前提到的答案中所提到的那样,所有外围块都在睡眠模式下进行电动。
谢谢,PM_DIALOG.