你好,
我们使用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时钟信号非常困惑?
谢谢
嗨hasiky,
要影响SPI Master,您应该按照以下步骤操作:
1.使用set_pad_functions()和gpio_reservations()配置SPI外设垫
2.通过在Periph_init()函数中调用spi_init()来初始化SPI
您可以选择枚举SPI_XTAL_FREQ_T来配置CLK的FREQ,请注意:
3.使用spi_transaction()发送/读取SPI数据
BR,宜宾
你好,
谢谢您的答复。我确实跟随你的步骤试用,但它也不工作。
我使用了“BLE_APP_PERITERAL”进行测试和使用示波器观察时钟信号。有趣的是,一旦我将代码下载到芯片中,时钟信号似乎是1 s的漂亮方波,然后消失成一条线。
顺便问一下,你在哪里调用periph_init()函数?我应该在main()函数中吗?但是,我找不到它在哪里。
非常感谢你。
此外,有趣的是,一旦我将代码下载到芯片中,时钟信号在1s内似乎是美丽的方波,然后消失在0左右的直流线上。
嗨hasiky,
我建议您尝试使用SDK的Peripheral_examples文件夹中的SPI项目。它应该相当容易看出定义GPIO和初始化SPI接口的正确流动。
/ mhv.
非常感谢。我确实和他一起工作过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.
嗨hasiky,
只能在指定值内更改频率。为此,应使用预定义枚举中的值指定频率:
如果您注释出SPI_Init呼叫,则不应期望任何SPI活动。
当设备启动或重新启动时,它将运行启动加载程序尝试从各种外部源加载代码(检查AN-B-001 APP NOTE)。这包括一些SPI活动,我猜这就是你观察到的。
/ mhv.