无法检测到SPI时钟

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
7个帖子/ 0新
最后一篇
哈希
离线
最后一次露面:6个月前1年
加入:2019-05-03 08:21
无法检测到SPI时钟

你好,

我们使用DA14580DEVKT-B。我们尝试使用SPI接口将数据从加速度计传输到DA14580芯片,然后通过BLE发送数据。

但是,即使我们进行了如下配置(我们在SDK中使用的是ble_app_外围样本),也无法从P0_0检测到SPI时钟信号:

setbits16(clk_per_reg,spi_enable,1);

//初始化spi.
setBits16(SPI_CTRL_REG,SPI_ON,0);//关闭SPI块,如果打开
setbits16(spi_ctrl_reg,spi_word,bitmode);//设置SPI BitMode
setbits16(spi_ctrl_reg,spi_smn,角色);//选择角色(Master / Slave)
setBits16(SPI_CTRL_REG,SPI_POL,CLK_POL);//选择SPI时钟空闲极性
setBits16(SPI_CTRL_REG,SPI_PHA,PHA_MODE);//选择SPI采样边缘选择(PHA_MODE - 参见数据表P.53-54)
setbits16(spi_ctrl_reg,spi_mint,irq);//启用/禁用SPI中断到NVIC
setbits16(spi_ctrl_reg,spi_clk,freq);// SPI块时钟分频器
setbits16(spi_ctrl_reg,spi_on,1);//启用SPI块

gpio_configurepin(spi_gpio_port,spi_cs_pin,输出,pid_spi_en,true);
gpio_configurepin(spi_gpio_port,spi_clk_pin,输出,pid_spi_clk,false);
gpio_configurepin(spi_gpio_port,spi_do_pin,输出,pid_spi_do,false);
gpio_configurepin(spi_gpio_port,spi_di_pin,输入,pid_spi_di,false);

然后,我们想弄清楚我们试图运行Blinky和Spi_flash的错误。SPI时钟信号可以从P0_0视为SUQARE WAVE,如上面相同的配置。

但是,无论我们如何将SPI_CTRL_REG的SPI_CLK从00到11更改为11,就无法更改时钟频率。

代码:setbits16(spi_ctrl_reg,spi_clk,freq);

甚至,我们逐个将所有代码更改为闪烁,时钟信号保持不变。所以我们对如何生成并改变的SPI时钟信号非常困惑?

谢谢

设备:
cyibin.
离线
最后一次露面:6个月2周前
职员
加入:2017-12-14 02:48
嗨hasiky,

嗨hasiky,

要影响SPI Master,您应该按照以下步骤操作:

1.使用set_pad_functions()和gpio_reservations()配置SPI外设垫

2.通过在Periph_init()函数中调用spi_init()来初始化SPI

您可以选择枚举SPI_XTAL_FREQ_T来配置CLK的FREQ,请注意:

  • SPI控制器的时钟速度高达16 MHz
  • 时钟除以1,2,4,8
  • SPI时钟线速度高达8 MHz

3.使用spi_transaction()发送/读取SPI数据

BR,宜宾

哈希
离线
最后一次露面:6个月前1年
加入:2019-05-03 08:21
你好,

你好,

谢谢您的答复。我确实跟随你的步骤试用,但它也不工作。

我使用了“BLE_APP_PERITERAL”进行测试和使用示波器观察时钟信号。有趣的是,一旦我将代码下载到芯片中,时钟信号似乎是1 s的漂亮方波,然后消失成一条线。

顺便问一下,你在哪里调用periph_init()函数?我应该在main()函数中吗?但是,我找不到它在哪里。

非常感谢你。

哈希
离线
最后一次露面:6个月前1年
加入:2019-05-03 08:21
而且,很有意思

此外,有趣的是,一旦我将代码下载到芯片中,时钟信号在1s内似乎是美丽的方波,然后消失在0左右的直流线上。

mhv_dialog
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨hasiky,

嗨hasiky,

我建议您尝试使用SDK的Peripheral_examples文件夹中的SPI项目。它应该相当容易看出定义GPIO和初始化SPI接口的正确流动。

/ mhv.

哈希
离线
最后一次露面:6个月前1年
加入:2019-05-03 08:21
非常感谢。我确实和他一起工作过

非常感谢。我确实和他一起工作过the spi project in the peripheral_examples in SDK folder. I did observe the 2 MHz clock signal coming from P0_0. However, when I changed the value of SPI_XTAL_Freq_t and commented out the spi_init() function respectively, the output of P0_0 remained unchanged. Even I use blinky example without any seetting about spi, the output remained. That was really confusing.

mhv_dialog
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨hasiky,

嗨hasiky,

只能在指定值内更改频率。为此,应使用预定义枚举中的值指定频率:

typedef enum SPI_-FREQ_模式{SPI_-XTAL_-DIV_8、SPI_-XTAL_-DIV_4、SPI_-XTAL_-DIV_2、SPI_-XTAL_-DIV_14、}SPI_-XTAL_-FREQ_t;setBits16(SPI_CTRL_REG,SPI_CLK,SPI_XTAL_DIV_4);

如果您注释出SPI_Init呼叫,则不应期望任何SPI活动。

当设备启动或重新启动时,它将运行启动加载程序尝试从各种外部源加载代码(检查AN-B-001 APP NOTE)。这包括一些SPI活动,我猜这就是你观察到的。

/ mhv.