你好 ,
我们正在尝试与基于SPI的BMI055加速度计进行通信,
这是我们的设置:
o p0_0 spi时钟
O P0_1 LF_ENABLE(CS)
o p0_5 miso.
o p0_6 mosi.
这是代码:
gpio_configurepin(gpio_port_0,gpio_pin_0,输出,pid_spi_clk,false);// 钟
gpio_configurepin(gpio_port_0,gpio_pin_1,输出,pid_spi_en,true);// CS
gpio_configurepin(gpio_port_0,gpio_pin_5,输入,pid_spi_di,false);// 味噌
gpio_configurepin(gpio_port_0,gpio_pin_6,输出,pid_spi_do,false);// mosi.
// ......
spi_init(&cs_pad_param,//注意:这一点到CS行的PIN和端口
spi_mode_8bit,
spi_role_master,
spi_clk_idle_pol_low,
spi_pha_mode_1,
spi_mint_disable,
spi_xtal_div_8);
和一个简单的读取寄存器代码:
spi_cs_high();
spi_set_bitmode(spi_mode_8bit);
spi_access((uint8_t)(read_mode |地址));
regval =(UINT8_T)SPI_ACCESS(0x0000);//注意:regVal始终为0xFF
spi_cs_low();
现在,读尝试始终返回0xFF(Address 0x50001202的值),
我们知道这是错误的,因为我们试图读取应该为0xFA的默认值。
谢谢,
Baswaraj.
嗨Baswaraj,
通常SPI CS很高,所以你应该先走低,然后走高。不是另外一边。也许你试试呢?
除此之外,如果您有示波器,您应该观察SPI总线。祝你好运。
编辑:很好地“锻炼”CS引脚通过快速切换低电平,然后在实际阅读之前保持高度。