SPI时钟不能被检测到

⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.wsdof.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
7新职位/ 0
最后发表
hasiky
离线
最后看到:2年7个月前
加入:2019-05-03 08:21
SPI时钟不能被检测到

你好,

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

然而,从P0_0 SPI时钟信号不能被探测到,即使我们已经配置为遵循(我们使用SDK ble_app_peripheral样本):

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作用);/ /选择角色(主/从)
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、频率);/ / 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,假);
GPIO_ConfigurePin (SPI_GPIO_PORT SPI_DO_PIN、输出PID_SPI_DO,假);
GPIO_ConfigurePin (SPI_GPIO_PORT SPI_DI_PIN,输入、PID_SPI_DI假);

然后,我们想找出是错误的这样的作品,我们试图运行和SPI_flash。SPI时钟信号可以被视为suqare波从P0_0如上相同的配置。

然而,无论我们如何改变了SPI_CLK SPI_CTRL_REG从00到11,时钟频率不能改变。

代码:SetBits16 (SPI_CTRL_REG SPI_CLK频率);

甚至,我们改变了作品中的所有代码,时钟信号保持不变。所以我们很困惑spi时钟信号如何生成和改变?

谢谢。

设备:
CYibin
离线
最后看到:1年7个月前
工作人员
加入:2017-12-14 02:48
嗨hasiky,

嗨hasiky,

impletement spi的主人,你应该遵循以下步骤:

1。使用set_pad_functions配置垫的spi外围()和GPIO_reservations ()

2。在periph_init spi的Init调用spi_init()()函数

你可以选择的枚举SPI_XTAL_Freq_t配置时钟的频率,请注意:

  • 时钟速度16兆赫SPI的控制器
  • 时钟除以1,2,4,8
  • SPI时钟线加速到8 MHz

3所示。发送/阅读使用spi_transaction spi数据()

BR,宜宾

hasiky
离线
最后看到:2年7个月前
加入:2019-05-03 08:21
你好,

你好,

谢谢你的回应。试一试,我跟着你一步,但它不工作。

我使用了“ble_app_peripheral”测试,用示波器观察时钟信号。有意思的是,一旦我的代码下载到芯片,时钟信号为1 s似乎是美丽的方波,然后消失在一条线。

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

非常感谢。

hasiky
离线
最后看到:2年7个月前
加入:2019-05-03 08:21
此外,它很有趣

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

MHv_Dialog
离线
最后看到:10个月2周前
工作人员
加入:15 2013-12-06
嗨hasiky,

嗨hasiky,

我建议你尝试使用spi项目peripheral_examples文件夹的SDK。它应该很容易看到正确的定义GPIOs和初始化流SPI接口。

/ MHv

hasiky
离线
最后看到:2年7个月前
加入:2019-05-03 08:21
谢谢你!我做的工作

谢谢你!我做的工作与spi项目在SDK peripheral_examples文件夹。我观察了2 MHz时钟信号来自P0_0。然而,当我改变了spi_init SPI_XTAL_Freq_t的价值和注释掉了()函数分别P0_0的输出保持不变。即使我用作品例子没有任何关于spi的甜美,输出仍然。这真的很让人困惑。

MHv_Dialog
离线
最后看到:10个月2周前
工作人员
加入:15 2013-12-06
嗨hasiky,

嗨hasiky,

你只能改变频率在指定的值。要做到这一点,你应该指定频率使用预定义的枚举值:

typedef enum SPI_FREQ_MODES {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的活动。

当设备靴子或重新启动时,它将运行一个引导装载程序试图从各种外部资源加载代码(检查- b - 001应用注意)。这包括一些SPI活动,我猜这是你在观察什么。

/ MHv