使用的是模拟的ADXL362与DA14580相连,
进行初始化
spi_init(&spipin,SPI_MODE_8BIT,SPI_ROLE_MASTER,SPI_CLK_IDLE_POL_LOW,SPI_PHA_MODE_0,SPI_MINT_DISABLE,SPI_XTAL_DIV_8);
后运行代码读取器件ID,
spi_cs_low();
spi_access(0x0B中);
spi_access(0×00);
DEVID = spi_access(0×00);
spi_cs_high();
返回为0x00,有时能正常读取有时不行。请问是怎么回事呢?
顺便问一下若是使用SDK5.0.3编写好了代码,是否有必要将代码移植到SDK5.0.4上呢?
设备:
×你可以对照SDK5.0.4的DA1458x_Software_Release_Notes_v5.0.4.pdf来决定是否有必要更新。代码的结构都差不多
×SPI的问题,你仿照函数spi_read_flash_jedec_id加一段试试。或者从逻辑分析仪里看看问题在哪里
spi_flash_status = spi_flash_wait_till_ready();
如果(spi_flash_status!= ERR_OK)
返回spi_flash_status;//即有错误
spi_set_bitmode(SPI_MODE_8BIT);
您好,
我参照了ADXL362的规格书发现它并没有状态指示的寄存器。
逻辑分析仪是什么?是smartsnippet中的功能吗?
也可以用示波器上看波形。还有就是spi_init里的配置再确认一遍〜
配置是已经确认过啦〜主要就是代码什么都没动过,有时候能正常工作,有时候无法正常工作,这点比较让人费解......会不会是电路连接上的错误?
把操作的代码放到periph_init函数里面,看看结果怎么样?
跑调试结果变为0x00之后试了一把还是不行。今天早上刚开机第一次调试程序是正常的,后面有一次变为0x00之后都是0×00了..和这个会有关系吗?
你放在periph_init里面,多次反复跑,把结果打印出来,看看是不是每次都是对的。如果不对,你在中间加一些延时看看
操作的代码包括SPI_init吗?光放接入部分的代码反复跑,要么就是每次都对的,要么就是每次都不对......