你好,对话小组,
我是一个正在做项目的学生,遇到了一些困难。
我正在尝试使用DA14580开发板从LIS3DH加速度计读取加速度数据。当我尝试读取任何加速度轴寄存器时,我收到-1返回。我想我的SPI坏了。
我已经使用了dice应用程序示例中提供的LIS3DH\u driver.c中提供的函数。
我尝试过在不同的模式下初始化:
LIS3DH\u WriteReg(0x20、0x77)//CTRL\ U REG1:打开传感器,启用X、Y和Z。ODR=400赫兹。LPen=0“正常”模式
LIS3DHèu WriteReg(0x23、0x80)//CTRL\u REG4:FS=2g。HR=0“正常”模式,低分辨率
AxesRaw\t a\u数据;
LIS3DH\u GetAccAxesRaw(&a\u数据);
然后通过修改DSPS代码通过蓝牙发送3轴加速度数据。
我在periph\u setup.h中设置了以下管脚:
#定义SPI\u GPIO\u端口GPIO\u端口\u 0
#定义SPI\u CLK\u PIN GPIO\u PIN\u 0
#定义SPI\u CS\u PIN GPIO\u PIN \u 3
#定义SPI\ U DI\ U引脚GPIO\ U引脚5
#定义SPI\u DO\u PIN GPIO\u PIN \u 6
我在periph\u setup.c中设置了以下内容
保留GPIO(SPI\ CLK、SPI\ GPIO\端口、SPI\ CLK\引脚、PID\ SPI\ CLK);
保留GPIO(SPI\ U CS、SPI\ U GPIO\ U端口、SPI\ U CS\ U引脚、PID\ U SPI\ U EN);
保留GPIO(SPI\ U DI、SPI\ U GPIO\ U端口、SPI\ U DI\ U引脚、PID\ U SPI\ U DI);
保留GPIO(SPI\ U DO、SPI\ U GPIO\ U端口、SPI\ U DO\ U引脚、PID\ U SPI\ U DO);
保留\u GPIO(UART1 \u TX、UART1 \u TX \u端口、UART1 \u TX \u引脚、PID \u UART1 \u TX);
我已将加速计的MOSI连接到“P0\ U 6”。味噌到“P0\ u5”。Vdd到“SPI\U SUP”。芯片选择到“P0\u 3”,时钟选择到“P0\u 0”。接地连接到“P1\ U 2”上方的两个接地引脚。
我一直在试图找出为什么我的SPI可能不工作,并将非常感谢任何帮助。非常感谢您抽出时间。
谨上,
埃卡普斯通
出于某种原因,它被审查与明星,所以我真的道歉。在RESERVE\u GPIO的第二行中的第一个删失字是“SPI\u CS”,第二个删失字是“P0\u 0”
再次感谢你。
谨上,
埃卡普斯通
芯片选择和“p0\u0”我不知道为什么它再次被审查,即使它是罚款的预览,我再次道歉。
谨上,
埃卡普斯通
你好,你能拼出那个带星号的单词吗(每个字母之间有空格)-我们的筛选员把它误认为是坏语言。BR JE\u对话框
嗨,我的对话,
第一个加上星号的单词是:S P I C S
第二个加了星号的单词是:p0\u0
非常感谢你的答复。
谨上,
埃卡普斯通
嗨,埃卡普斯通
试着切换MISO->SDO和MOSI->SDI线路,我认为这是正确的配置。你能使用GetWHO\u AM\u I函数吗?它是否返回识别码?
谢谢你的对话
嗨,MT\u dialog,
当我使用WHO\u AM\u I函数时,我得到了相同的-1输出。我读到的每一个寄存器都会发生这种情况。所以我相信这是SPI不工作时的默认值。我忘了说这也是我的外围设备。c:
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 3,输出,PID\ U SPI\ U EN,true);
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 0,输出,PID\ U SPI\ U CLK,false);
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 6,输出,PID\ U SPI\ U DO,false);
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 5,输入,PID\ U SPI\ U DI,false);
因此,加速度计的输出进入DA14580的输入引脚。
我设置别针的方式正确吗?不太清楚为什么SPI不起作用。
谨上,
埃卡普斯通
嗨,埃卡普斯通,
尝试将SPI\u DI pin设置为INPUT\u PULLUP状态并尝试一下。
谢谢你的对话
我也面临同样的问题。然后找出芯片选择引脚是硬编码在驱动程序c文件。编辑后效果很好。
你好,乔治,
谢谢你的指示。
你好,下午好