你好,
我们使用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时钟信号如何生成和改变?
谢谢。
嗨hasiky,
impletement spi的主人,你应该遵循以下步骤:
1。使用set_pad_functions配置垫的spi外围()和GPIO_reservations ()
2。在periph_init spi的Init调用spi_init()()函数
你可以选择的枚举SPI_XTAL_Freq_t配置时钟的频率,请注意:
3所示。发送/阅读使用spi_transaction spi数据()
BR,宜宾
你好,
谢谢你的回应。试一试,我跟着你一步,但它不工作。
我使用了“ble_app_peripheral”测试,用示波器观察时钟信号。有意思的是,一旦我的代码下载到芯片,时钟信号为1 s似乎是美丽的方波,然后消失在一条线。
顺便问一下,你在哪里叫periph_init()函数?我应该在main()函数?但是,我找不到在哪里。
非常感谢。
此外,有趣的是,一旦我的代码下载到芯片,时钟信号为1 s似乎是美丽的方波,然后消失在直流线约为0。
嗨hasiky,
我建议你尝试使用spi项目peripheral_examples文件夹的SDK。它应该很容易看到正确的定义GPIOs和初始化流SPI接口。
/ MHv
谢谢你!我做的工作与spi项目在SDK peripheral_examples文件夹。我观察了2 MHz时钟信号来自P0_0。然而,当我改变了spi_init SPI_XTAL_Freq_t的价值和注释掉了()函数分别P0_0的输出保持不变。即使我用作品例子没有任何关于spi的甜美,输出仍然。这真的很让人困惑。
嗨hasiky,
你只能改变频率在指定的值。要做到这一点,你应该指定频率使用预定义的枚举值:
如果你spi_init调用注释掉,你不应该指望SPI的活动。
当设备靴子或重新启动时,它将运行一个引导装载程序试图从各种外部资源加载代码(检查- b - 001应用注意)。这包括一些SPI活动,我猜这是你在观察什么。
/ MHv