您好对话团队,
我是一个在一个项目上工作的学生,并遇到了一些困难。
我正在尝试使用DA14580开发板从LIS3DH加速度计读取加速数据。当我尝试从任何加速轴读取时,我收到-1返回。我相信我的spi不起作用。
我已经利用了DICE应用示例中提供的LIS3DH_DRIVER.C中提供的函数。
我尝试以不同模式初始化:
LIS3DH_WRITEREG(0x20,0x77);// ctrl_reg1:打开传感器,使能X,Y和Z. ODR = 400Hz。lpen = 0“正常”模式
LIS3DH_WRITEREG(0x23,0x80);// ctrl_reg4:fs = 2g。HR = 0“正常”模式,具有低分辨率
axesraw_t a_data;
lis3dh_getaccaxesraw(&a_data);
然后通过DSPS代码的修改将3轴加速数据通过蓝牙发送。
我在periph_setup.h中设置了以下引脚:
#define spi_gpio_port gpio_port_0.
#define spi_clk_pin gpio_pin_0.
#define spi_cs_pin gpio_pin_3.
#define spi_di_pin gpio_pin_5.
#define spi_do_pin gpio_pin_6.
我在periph_setup.c中设置了以下内容
保留_GPIO(SPI_CLK,SPI_GPIO_PORT,SPI_CLK_PIN,PID_SPI_CLK);
Letail_GPIO(SPI_CS,SPI_GPIO_PORT,SPI_CS_PIN,PID_SPI_EN);
保留_GPIO(SPI_DI,SPI_GPIO_PORT,SPI_DI_PIN,PID_SPI_DI);
保留_GPIO(SPI_DO,SPI_GPIO_PORT,SPI_DO_PIN,PID_SPI_DO);
保留_GPIO(UART1_TX,UART1_TX_PORT,UART1_TX_PIN,PID_UART1_TX);
我已将加速度计的MOSI连接到'P0_6'。miso'p0_5'。VDD到'SPI_SUP'。芯片选择“P0_3”和时钟到“P0_0”。地面连接到“P1_2”上方的两个引脚。
我一直试图弄清楚为什么我的SPI可能不起作用,并非常感谢任何帮助。谢谢你的时间。
此致,
EeeCapstone.
由于某种原因,它被星星审查所以我会道歉。第二行保留_GPIO中的第一个被审查的单词是“SPI_CS”,第二个被审查的单词是“P0_0”
再一次谢谢你。
此致,
EeeCapstone.
芯片选择和“p 0 _ 0”我不知道为什么它再次被审查,即使在预览中很好,我也会再次道歉。
此致,
EeeCapstone.
Helo EeeCapstone,你能拼出令人毛(每封信之间的空间) - 我们的佩特勒是错误地将其作为糟糕的唐扬望。BR JE_DIALOG.
嗨je_dialog,
令人统一的第一个单词是:S p i _ c s
已经令人统计的第二个词是:P 0 _ 0
非常感谢你的答复。
此致,
EeeCapstone.
嗨EeeCapstone.
尝试切换MISO - > SDO和MOSI-> SDI线,我认为这是正确的配置。你能使用getwho_am_i函数吗?它是否返回了识别码?
谢谢mt_dialog.
嗨mt_dialog,
当我使用WHO_AM_I函数时,我得到-1的相同输出。这是我读取的每个寄存器的情况。所以我相信SPI不起作用的默认值是默认值。我忘了提到这也是我的periph_setup.c:
gpio_configurepin(gpio_port_0,gpio_pin_3,输出,pid_spi_en,true);
gpio_configurepin(gpio_port_0,gpio_pin_0,输出,pid_spi_clk,false);
gpio_configurepin(gpio_port_0,gpio_pin_6,输出,pid_spi_do,false);
gpio_configurepin(gpio_port_0,gpio_pin_5,输入,pid_spi_di,false);
因此加速度计的输出进入DA14580的输入引脚。
是我建立针线的方式吗?真的不确定SPI没有工作。
此致,
EeeCapstone.
嗨EeeCapstone,
尝试在input_pullup状态下设置SPI_DI引脚,并尝试一下。
谢谢mt_dialog.
我也面临着同样的问题。然后找出芯片选择引脚在驱动程序C文件中硬编码。在编辑后它正在正常工作。
嗨ligo.george,
谢谢你的迹象。
问候,pm_dialog