嗨,对话框中,
我是BLE的新手,一直在使用DA14580-B开发套件。
我的目标是通过SPI读取外部传感器(MPU6500)的值,然后将这些数据值发送到计算机进行信号处理。
到目前为止,我已经能够设置与计算机的UART通信(即能够将字符串打印到tera术语)。
接下来,我尝试初始化外部传感器,然后通过SPI从传感器读取数据,然后在Tera Term中打印这些值。
有可能做我想做的事吗?我能同时通过UART和外部传感器与计算机通信吗?
当我尝试这么做时,我从传感器读取的都是1。
你能告诉我为什么我不能从传感器成功读取数据吗?任何帮助都是非常好的,谢谢!
下面是读取和写入传感器寄存器的部分代码:
uint8_t R_BIT = 0x80;
unit8_t W_MASK = 0x7F;
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 (0 x00);
spi_cs_high ();
返回dataRead;
}
设备:
我的一个想法是使用逻辑分析器来确认SPI引脚的值是正确的,但是我不确定如何在Keil中使用这个应用程序。
例如,我知道这可能听起来很傻,但我怎么知道大头针的名字,所以我可以添加他们的绘图?
提前谢谢!
我建议使用示波器或逻辑分析仪来查看SPI信号,并检查它们的行为是否如预期的那样。
SPI接口使用的DA14580引脚通常在包含在user_外围_setup.c文件中的set_pad_functions函数中定义。
嗨IM_Dialog,
我试过在Keil中使用逻辑分析器,但仍然不能让它工作。我的问题是,当我点击设置和尝试添加我的引脚,我得到错误的“未知信号”的一切,我尝试。
是否有任何进一步的设置,我必须做,以便能够使用逻辑分析器?
这是我的user_外围设置。h:
/ * *
**************************************************************************************
*
* @file user_periph_setup.h
*
* @brief设置外设头文件。
*
*版权所有(C) 2015。雷竞技电竞平台对话半导体有限公司,未出版作品。这台电脑
*程序包含机密,专有信息,是商业机密
*天雷竞技电竞平台宇半导体有限公司禁止所有使用、披露和/或复制
*除非得到书面授权。保留所有权利。
*
*和贡献者。
*
**************************************************************************************
*/
的ifndef USER_PERIPH_SETUP_H
#定义USER_PERIPH_SETUP_H
/*
*包含文件
**************************************************************************************
*/
# include“rwip_config.h”
# include“global_io.h”
# include“arch.h”
# include“da1458x_periph_setup.h”
/ / # include“i2c_eeprom.h”
/*
*定义
**************************************************************************************
*/
//*** <<<在上下文菜单中使用配置向导>>> *
如da1458x_peripheral _setup.h <1=> Basic <2=> Pro <3=> Expert .h
#定义HW_CONFIG (0)
#define HW_CONFIG_BASIC_DK (HW_CONFIG==0 && SDK_CONFIG==1) || HW_CONFIG==1
#define hw_config_dk (HW_CONFIG==0 && SDK_CONFIG==2) || HW_CONFIG==2
#define HW_CONFIG_EXPERT_DK (HW_CONFIG==0 && SDK_CONFIG==3) || HW_CONFIG==3
//*** << configuration section >>> * end of configuration section >
/****************************************************************************************/
/* UART configuration modified on 05/07/2016 */
/****************************************************************************************/
//选择UART设置
#define UART_BAUDRATE_115K2 // Baudrate in bits/s: {9K6, 14K4, 19K2, 28K8, 38K4, 57K6, 115K2}
#define UART2_DATALENGTH UART_CHARFORMAT_8 //数据长度:{5,6,7,8}
#define UART2_PARITY UART_PARITY_NONE //奇偶校验:{UART_PARITY_NONE, UART_PARITY_EVEN, UART_PARITY_ODD}
#define UART2_STOPBITS UART_STOPBITS_1 //停止位:{UART_STOPBITS_1, UART_STOPBITS_2}
#define uart2_flowcontrol_disabled //流量控制:{UART_FLOWCONTROL_DISABLED, UART_FLOWCONTROL_ENABLED}
#定义UART_ENABLED
/****************************************************************************************/
/* i2c eeprom配置*/
/****************************************************************************************/
#define I2C_EEPROM_SIZE 0x20000 // EEPROM大小(字节
#define I2C_EEPROM_PAGE 256 // EEPROM的页大小(以字节为单位)
#define I2C_SPEED_MODE I2C_FAST // 1:标准模式(100kbits /s), 2:快速模式(400kbits /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 FLASH配置*/
/****************************************************************************************/
#define SPI_FLASH_DEFAULT_SIZE 131072 // SPI Flash内存大小,单位是字节
#定义SPI_FLASH_DEFAULT_PAGE 256
#定义SPI_SECTOR_SIZE 4096
#定义SPI_EN_GPIO_PORT GPIO_PORT_0
#定义SPI_EN_GPIO_PIN GPIO_PIN_3
#定义SPI_CLK_GPIO_PORT GPIO_PORT_0
#定义SPI_CLK_GPIO_PIN GPIO_PIN_0
#定义SPI_DO_GPIO_PORT GPIO_PORT_1
#定义SPI_DO_GPIO_PIN GPIO_PIN_1
#定义SPI_DI_GPIO_PORT GPIO_PORT_1
#定义SPI_DI_GPIO_PIN GPIO_PIN_3
/ *启用WKUPCT。wkupct_quadec驱动所需。*/
#定义WKUP_ENABLED
/****************************************************************************************/
/* uart引脚配置*/
/****************************************************************************************/
#定义UART1_TX_GPIO_PORT GPIO_PORT_0
#定义UART1_TX_GPIO_PIN GPIO_PIN_4
#定义UART1_RX_GPIO_PORT GPIO_PORT_0
#定义UART1_RX_GPIO_PIN GPIO_PIN_5
#定义UART_ENABLED
/****************************************************************************************/
/* LED配置*/
/****************************************************************************************/
#定义GPIO_ALERT_LED_PORT GPIO_PORT_1
#定义GPIO_ALERT_LED_PIN GPIO_PIN_0
/*
*函数声明
**************************************************************************************
*/
/ * *
**************************************************************************************
* @brief启用pad和外设时钟,假设外设电源域
*是下来。设置Uart和SPi时钟。
* @return无效
**************************************************************************************
*/
空白periph_init(无效);
/ * *
**************************************************************************************
* @brief Map端口引脚。Uart、SPI端口引脚和GPIO端口映射
* @return无效
**************************************************************************************
*/
空白set_pad_functions(无效);
/ * *
**************************************************************************************
每个应用程序在这里保留自己的gpio。
* @return无效
**************************************************************************************
*/
空白GPIO_reservations(无效);
# endif / / USER_PERIPH_SETUP_H
嗨IM_Dialog,
今天我把一个示波器放在SPI_CLK引脚(端口0引脚0),不能检测时钟信号。我能够观察到CS引脚在开始读/写时由高到低,在完成读/写时由低到高。但我没有探测到时钟信号。
我已经在SPI_CTRL_REG中设置了SPI时钟,并选择了时钟分割因子。
我的问题是以下:是否有另一条指令分配SPI时钟到我所选择的引脚(端口0引脚0)或有一个预先定义的引脚上的SPI时钟DA14580?
提前谢谢,
刘易斯
嗨lewiso,
SPI和UART使用相同的引脚吗?如果是,在da14580 sdk中有一个项目,..utilities\flash_programmer\。它通过UART发送/接收数据,并写入/读取SPI flash。在某些情况下,甚至通过相同的引脚,改变它们的功能。也许这个项目会给你一些提示。
你好弗拉德,
我使用不同的引脚为UART和SPI。好的,我会看一下他的项目。
我觉得我缺少一个设置SPI_CLK引脚作为时钟信号的指令,你能告诉我如何去做吗?
谢谢,
刘易斯
嗨lewiso,
为了设置SPI时钟你也必须SPI时钟functionallity分配给指定的密码,例如为了设置指定的销作为SPI时钟针(主)你必须包括以下语句periph_init()函数GPIO_ConfigurePin (SPI_GPIO_PORT、SPI_CLK_PIN、输出、PID_SPI_CLK假);以及其他引脚功能(MISO, MOSI和CS)。在这之后,您必须启用spi模块,这是由驱动程序在使用正确的设置参数调用spi_init()函数时完成的。为了看到时钟时钟线,你将不得不执行一个spi的事务,您可以检查检查一下弗拉德好心的建议,我建议是检查在SDK中的peripheral_examples spi_flash项目,这是一个简单的演示如何使用spi接口spi flash。
由于MT_dialog