嗨对话框,
我是新手的新手,一直在使用da14580-b dev套件。
我的目标是通过SPI读取外部传感器(MPU6500)的值,然后将这些数据值发送到计算机以进行信号处理。
到目前为止,我已经能够与计算机建立UART通信(即能够将字符串打印到TERA术语)。
接下来,我尝试初始化外部传感器,然后通过SPI从传感器读取数据,然后在TERA项中打印这些值。
是否有可能想要我想要做?正如我可以通过UART和外部传感器同时通过SPI与计算机通信?
当我尝试这样做时,我从传感器读取的所有情况都是1的。
您是否可以建议我无法成功从传感器读取的任何原因?任何帮助都会非常感谢!
以下是我在传感器上读取和写入寄存器的代码的一部分:
uint8_t r_bit = 0x80;
Unit8_t w_mask = 0x7f;
void writereg(Unit8_t地址,Unit8_t数据)
{
地址&= w_mask;
spi_cs_low();
spa_access(地址);
spa_access(数据);
spi_cs_high();
}
UINT8_T READREG(UNIT8_T地址)
{
地址| = r_bit;
Unit32_t DataRead = 0;
spa_cs_low();
dataread = spa_access(地址);
dataread = spa_access(0x00);
spi_cs_high();
返回dataread;
}
设备:
我认为我要使用逻辑分析仪来确认SPI引脚的值是正确的,但我不确定如何在Keil中使用此应用程序。
例如,我知道这可能听起来很傻,但我如何知道引脚的名称,所以我可以将它们添加到绘制?
提前致谢!
我建议使用示波器或逻辑分析仪查看SPI信号并检查它们的行为正常。
SPI接口使用的DA14580引脚通常在user_periph_setup.c文件中包含的set_pad_functions函数中定义。
嗨im_dialog,
我尝试在keil中使用逻辑分析仪,但仍然无法使其工作。我的问题是点击设置并尝试添加我的引脚时,我会为我尝试的一切获得错误“未知信号”。
是否有任何进一步的设置,以便能够使用逻辑分析仪?
这是我的user_periph_setup.h:
/ **
**************************************************************************************
*
* @file user_periph_setup.h.
*
* @brief外设设置头文件。
*
*版权所有(c)2015.对话半导体有限公司yabo国际娱乐未发表的工作。这台电脑
*计划包括机密,专有信息,是一个商业秘密
*对yabo国际娱乐话半导体有限公司禁止所有使用,披露和/或复制
*除非书面授权。版权所有。
*
*和贡献者。
*
**************************************************************************************
* /
#ifndef user_periph_setup_h.
#define user_periph_setup_h.
/ *
*包括文件
**************************************************************************************
* /
#include“rwip_config.h”
#include“global_io.h”
#include“arch.h”
#include“da1458x_periph_setup.h”
//#包括“i2c_eeprom.h”
/ *
*定义
**************************************************************************************
* /
// *** <<<在上下文菜单中使用配置向导>>> *
// DK选择<0 =>如da1458x_periph_setup.h <1 => Basic <2 => Pro <3 =>专家
#define hw_config(0)
#define hw_config_basic_dk((hw_config == 0 && sdk_config == 1)|| hw_config == 1)
#define hw_config_pro_dk((hw_config == 0 && sdk_config == 2)|| hw_config == 2)
#define hw_config_expert_dk((hw_config == 0 && sdk_config == 3)|| hw_config == 3)
// *** <<<配置部分>>> *
/ **************************************************************************************** /
/ * UART配置于05/07/2016 * /
/ **************************************************************************************** /
//选择UART设置
#define uart2_baudrate uart_baudrate_115k2 // baudrate in bits / s:{9k6,14k4,19k2,28k8,38k4,57k6,115k2}
#define uart2_datalength uart_charformat_8 // datalength中位数:{5,6,7,8}
#define uart2_parity uart_parity_none // parity:{uart_parity_none,uart_parity_even,uart_parity_odd}
#define uart2_stopbits uart_stopbits_1 //停止位:{uart_stopbits_1,uart_stopbits_2}
#define uart2_flowcontrol uart_flowcontrol_disabled // flow control:{uart_flowcontrol_disabled,uart_flowcontrol_enabled}
#define uart_enabled.
/ **************************************************************************************** /
/ * I2C EEPROM配置* /
/ **************************************************************************************** /
#define i2c_eeprom_size 0x20000 // EEPROM大小以字节为单位
#define i2c_eeprom_page 256 // EEPROM的页面大小以字节为单位
#define i2c_speed_mode i2c_fast // 1:标准模式(100 kbits / s),2:快速模式(400 kbits / s)
#define i2c_address_mode i2c_7bit_addr // 0:7位寻址,1:10位寻址
#define i2c_address_size i2c_2bytes_addr // 0:8位存储器地址,1:16位存储器地址,3:24位存储器地址
/ ** /
/ **************************************************************************************** /
/ * SPI闪光灯配置* /
/ **************************************************************************************** /
#define spi_flash_default_size 131072 // spi闪存大小以字节为单位
#define spi_flash_default_page 256.
#define spi_sector_size 4096.
#define spi_en_gpio_port gpio_port_0.
#define spi_en_gpio_pin gpio_pin_3.
#define spi_clk_gpio_port gpio_port_0.
#define spi_clk_gpio_pin gpio_pin_0.
#define spi_do_gpio_port gpio_port_1.
#define spi_do_gpio_pin gpio_pin_1
#define spi_di_gpio_port gpio_port_1
#define spi_di_gpio_pin gpio_pin_3.
/ *启用wkupct。wkupct_quadec驱动程序要求。* /
#define wkup_enabled.
/ **************************************************************************************** /
/ * UART引脚配置* /
/ **************************************************************************************** /
#define uart1_tx_gpio_port gpio_port_0.
#define uart1_tx_gpio_pin gpio_pin_4.
#define uart1_rx_gpio_port gpio_port_0.
#define uart1_rx_gpio_pin gpio_pin_5.
#define uart_enabled.
/ **************************************************************************************** /
/ * LED配置* /
/ **************************************************************************************** /
#define gpio_alert_led_port gpio_port_1.
#define gpio_alert_led_pin gpio_pin_0.
/ *
*功能声明
**************************************************************************************
* /
/ **
**************************************************************************************
* @brief启用Pad和外围时钟假设外围设备的电源域
*下降了。设置UART和SPI时钟。
* @return void.
**************************************************************************************
* /
void periph_init(空白);
/ **
**************************************************************************************
* @brief映射端口引脚。映射UART和SPI端口引脚和GPIO端口
* @return void.
**************************************************************************************
* /
void set_pad_functions(void);
/ **
**************************************************************************************
* @brief每个应用程序在这里保留自己的GPIO。
* @return void.
**************************************************************************************
* /
void gpio_reservations(无效);
#endif // user_periph_setup_h.
嗨im_dialog,
今天,我将示波器放在SPI_CLK引脚(端口0引脚0)上,无法检测到时钟信号。在完成读/写后,我能够观察到读/写和低到高电平的CS引脚从高到低电平。但我无法检测到时钟信号。
我已经在SPI_CTRL_REG中设置了SPI时钟以打开并选择时钟分割因子。
我的问题是以下内容:是否有另一条指令将SPI时钟分配给I已选择的引脚(端口0引脚0),或者是否有用于DA14580上的SPI时钟的预定识别引脚?
提前致谢,
刘易斯
嗨lewiso,
您是否使用相同的销钉和UART?如果是这样,在DA14580 SDK中有一个项目,...... \ flash_programmer \。它通过UART发送/接收数据,并写入/读取SPI Flash。在某些情况下甚至通过相同的引脚,改变其功能。也许这个项目会给你一个线索。
嗨vlad,
我正在为UART和SPI使用不同的引脚。好的,我会看看他的项目吗?
我觉得我缺少一个用于将SPI_CLK引脚设置为时钟信号的指令,您是否能够指导我如何去这件事?
谢谢,
刘易斯
嗨lewiso,
为了设置SPI时钟,您还必须将SPI时钟功能分配给指定的引脚,例如,要将指定的引脚设置为SPI时钟引脚(用于主设备),您将必须包含以下语句periph_init()函数gpio_configurepin(spi_gpio_port,spi_clk_pin,输出,pid_spi_clk,false);以及其他PIN功能(MISO,MOSI和CS)。执行此操作后,您必须启用SPI模块,这是通过调用正确设置参数调用SPI_Init()函数的驱动程序完成的。为了看到CLK线上的时钟,您必须执行SPI交易,您可以检查任一检查VLAD是否建议的内容,或者我建议的内容是检查SDK中的peripheral_examples中的spi_flash项目,这只是有关如何使用SPI闪存的SPI接口的简单演示。
谢谢mt_dialog.