你好,
我们正在尝试与基于SPI的低频低频接收机(AS3933)通信,
如果你正在读这篇文章,你可能会猜到我们正面临一些问题。
下面是我们的设置:
o P0_0 SPI时钟
o P0_1 LF_Enable (CS)
o P0_5味噌
o P0_6莫西人
下面是代码:
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_0, OUTPUT, PID_SPI_CLK, false);/ /时钟
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_1, OUTPUT, PID_SPI_EN, true);/ / CS
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_5, INPUT, PID_SPI_DI, false);/ /味噌
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_6, OUTPUT, PID_SPI_DO, false);/ /莫西人
/ /……
注意:这个指向CS线的引脚和端口
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 (0 x0000);//注意:regval总是0xff
spi_cs_low ();
现在,读尝试总是返回0xff(地址0x50001202的值),
我们可以肯定地知道这是错误的,因为我们试图读取一个默认值,应该是0x0e。为了验证这一点,我们使用了逻辑,从逻辑的角度来看,一切看起来都很好
(在MISO行上返回0x0e的实际值),但是如前所述,代码总是从调用spi_access()返回0xff。
谢谢你!
埃坦Michaelson。
嗨,搞清楚,
感谢您的描述和逻辑捕获。你也能制作一个通信的示波器图像吗?在这种情况下,我们可以再次检查逻辑层是否正常。还有,你确定接地线没有问题吗?例如,你是否已经制作了PCB,或者设计只是在两个dvk之间连接?谢谢!
RvA
埃坦嗨Michaelson。
我在BMI055(加速计)上也遇到了同样的问题。
如果你们解决了这个问题,请让我知道。
谢谢你!
Baswaraj