跳过主要内容

SmartBond DA14530和DA14531

世界上最小、功耗最低的蓝牙5.1芯片系统

DA14530和DA15531

SmartBond TINY™DA14530和DA14531是蓝牙®低能耗解决方案,为下一个10亿个物联网设备供电

SmartBond TINY™是世界上最小和最低功耗的蓝牙5.1芯片系统,在任何系统中添加低功耗蓝牙,在高容量下的成本为0.50美元。

这种令人敬畏的组合将移动连接到以前遥不可及的地方,触发一亿个物联网设备的浪潮,所有的智能磁共振微小。

低系统成本是通过SmartBond TINY的高水平集成来实现的:一个完整的蓝牙低能耗系统可以通过添加6个微小的外部无源,一个晶体和电源来实现。为了降低进入门槛,SmartBond TINY还将提供一个易于使用的微型模块,包含所有需要的组件,使任何应用程序添加低功耗蓝牙成为一个简单的插入。

记录低冬眠和有源功耗,确保长操作和货架寿命,即使是最小的,一次性电池。SmartBond TINY基于功能强大的32位arm Cortex M0+,集成了内存和一套完整的模拟和数字外设,非常节能,在最新的IoT连接EEMBC基准测试中,IoTMark™获得了创纪录的18300分。DA14531可在一个微小的2.0 x 1.7毫米包装,是其前身的一半大小,或任何其他领先制造商的产品。它还配有一个灵活的SDK,支持Keil和GCC等主要编译器。DA14530引脚兼容DA14531引脚2.2x3.0mm FCGQFN24封装,并通过内部LDO操作提供成本节约,消除了直流-直流电感的成本。

生命周期状态

活跃的

好处

未来证明,符合蓝牙5.1(核心)

优化为连接医疗,连接的消费者的一次性产品亚博电竞菠菜

  • 旨在使用一次性,甚至印刷电池
  • 适用于最小容量的电池,<<30mAh
  • 支持多年的保质期
  • 浪涌电流可限制具有高内阻的一次性电池
  • 包装设计允许具有最小可能的占地面积的低成本制造

只需要一个32MHz的晶体

在旁路模式不需要DC-DC电感

使用1.5V电池时不需要升压转换器

加速生产的生产线工具,导致更快的市场时间和最短的生产测试时间,每个设备

亚博国际官网平台网址

连接的消费者:
信标,智能标签,遥控器,近距离标签,连接手表,触控笔,鼠标,玩具,低功耗传感器,蓝牙LE在“BLE PIPE”上添加到现有应用程序亚博国际官网平台网址

联系医疗:
连接注射器,吸入器,葡萄糖监测器,智能贴片,血压计,温度计

汽车:
轮胎压力,监控系统和低功率无线传感器

FCGQFN24,2.2x3x0.4

WLCSP17 1.7 x2.05x0.5

每个季度,我们都将我们的产品、软件开发主题、培训、活动的最佳技术信息捆绑在一起,并将其发送到您的收件箱。亚博电竞菠菜

签我
查看以前的版本

保持联系

请直接通过我们的全球销售办事处与我们联系,或与我们的全球分销商和代表联系。

调查 分销商和代表 注册通讯
数据表
姓名 日期 版本
AN-B-088: DA145xx闪光灯选择指南(163.89 KB) 30/06/2021 1.3
DA14530数据表(4.26 MB) 30/08/2021 3.3
DA14531数据表(4.72 MB) 30/08/2021 3.4
产品简介
姓名 日期 版本
DA14531 SmartBond TINY产品简介(1.66 MB) 04/11/2019 1.0
DA14531 Smartbond微型产品简介(中文)(1.76 MB) 04/11/2019 1.0
SDK
姓名 日期 版本
DA14531和DA14585/6的SDK6.0.14.1114(9.45 MB) (仅限注册用户) 29/04/2020 SDK6.0.14.1114
SDK_6.0.14.1114_hotfix_001(6.31 MB) (仅限注册用户) 15/07/2020 SDK_6.0.14.1114_hotfix_001
SW-B-002 DA14531 SDK Release Notes v.6.0.14.1114(315.84 KB) (仅限注册用户) 29/04/2020 SDK6.0.14.1114
SDK用户手册
姓名 日期 版本
DA145xx SDK6 API文档(Doxygen)(5.42 MB) 29/04/2020 SDK6.0.14.1114
SDK6已知限制列表(25.09 KB) 29/04/2021 1.0
UM-B-117: DA14531 Getting Started with the Pro Development Kit (HTML)(25.09 KB) 30/03/2020 1.2
UM-B-117:[中文]DA14531 Getting Started with the Pro Development Kit (HTML)(25.09 KB) 30/03/2020 1.2
UM-B-118:DA14585-DA14531 SDK移植指南(25.09 KB) 29/04/2020 1.2
UM-B-119: DA14585-DA14531 SW平台参考(25.09 KB) 10/04/2020 2.0
UM-B-143对话框外部处理器接口(6.15 MB) 11/12/2020 0.2
UM-B-146-DA14585-DA14531-HCI命令(778.48 KB) 10/11/2020 1.0
UM-B-151:扩展DA14531的flash支持(25.09 KB) 22/04/2021 1.0
开发工具
姓名 日期 版本
Dialog Smartbond Flash Programmer for Linux OS(8.13 KB) 28/04/2021 1.0.6.3884
对话框SmartBond Flash Programmer for Mac OS(623.67 KB) 28/04/2021 1.0.6.3884
Dialog Smartbond Flash Programmer for Windows OS(4.57 MB) 10/08/2021 1.0.6.3886
SmartSnippets Studio发行说明(304.81 kB) 04/02/2021 2.0.16
Linux操作系统的SmartSnippets Studio V2.0.16(872.03 MB) 04/02/2021 2.0.16
SmartSnippets Studio v2.0.16为MacOS(497.78 MB) 04/02/2021 2.0.16
Windows操作系统的SmartSnippets Studio V2.0.16(707.61 MB) 04/02/2021 2.0.16
SmartSnippets工具箱发布说明(461.34 KB) 04/02/2021 5.0.16
SmartSnippets工具箱V5.0.16 for Linux OS(163.27 MB) 04/02/2021 5.0.16
SmartSnippets工具箱V5.0.16 for Windows OS(123.77 MB) 04/02/2021 5.0.16
UM-B-057 SmartSnippets Studio用户手册(3.07 MB) 04/02/2021 2.0.16
UM-B-083 SmartSnippets Toolbox用户手册(HTML)(25.09 KB) 04/02/2021 5.0.16
UM-B-138: flash编程用户手册(HTML)(25.09 KB) 24/03/2020 1.0
软件应用及示例亚博国际官网平台网址
姓名 日期 版本
克隆Github示例库(25.09 KB)
DA14531 SUOTA通过STM32(25.09 KB) 11/01/2021 1.1
对话框串行端口服务(DSP)(7.58 KB)
SmartBond™-无代码AT命令(7.58 KB)
社会距离标记(25.09 KB)
硬件设计示例
姓名 日期 版本
DA14531 QFN/Boost硬件设计示例(505.61 KB) 29/07/2020 1.0
DA14531 QFN/Buck硬件设计示例(487.49 KB) 29/07/2020 1.0
DA14531 QFN / ByPassHardware设计示例(484.73 KB) 29/07/2020 1.0
DA14531 WLCSP / BOOST硬件设计示例(527.56 KB) 15/09/2020 1.0
DA14531 WLCSP/ Buck硬件设计示例(511.04 KB) 15/09/2020 1.0
DA14531 WLCSP/旁路硬件设计示例(505.63 KB) 15/09/2020 1.0
硬件设计示例指南(25.09 KB) 15/09/2020 1.1
移动应用程序
姓名 日期 版本
对话框 - 源代码 - android(3.03 MB) (仅限注册用户) 04/05/2020 3.190.18
对话框 - 源代码 - iOS(4.11 MB) (仅限注册用户) 04/05/2020 3.200.14
生产线工具套件
姓名 日期 版本
生产线工具文件(7.58 KB)
应用笔记
姓名 日期 版本
AN-B-027:设计智能蓝牙打印天线(1.64 MB) 25/06/2020 2.3
AN-B-027:设计打印天线:DXF文件(12.38 KB) 04/04/2017 1.0
AN-B-072: DA14531从OTP和串行接口启动(1.99 MB) 02/09/2021 1.8
AN-B-073: DA14531用于减少杂散排放的过滤器(660.23 KB) 04/11/2019 1.2
AN-B-075: DA14531硬件指南(2.73 MB) 20/07/2021 1.5
AN-B-077: DA14531蓝牙直接测试模式(1.88 MB) 17/03/2020 1.2
白皮书
姓名 日期 版本
实现蓝牙LE数据泵(514.18 KB) 04/11/2019 一个牧师
实现蓝牙LE数据泵(中文)(613.3 KB) 04/11/2019 1.0
运动感知薄蓝牙LE信标解决方案的智能标签(984.86 KB) 13/07/2021 1.1
教程
姓名 日期 版本
BLE广告教程(HTML)(25.09 KB) 25/10/2019 1.0
DA145x设备上的BLE安全性(25.09 KB) 28/04/2020 2.0
BLE Suota更新DA14585 / DA14586和DA14531设备(25.09 KB) 13/07/2021 2.2
中文DA14531常见问题(HTML)(25.09 KB) 24/03/2021 1.1
中文DA14531常见问题(PDF)(1.12 MB) 24/03/2021 1.1
在DA14531和DA14585/DA14586设备上创建自定义GATT配置文件特征(25.09 KB) 01/04/2020 2.0
DA14531睡眠模式教程(HTML)(25.09 KB) 08/04/2021 1.3
DA14531_FAQs (HTML)(25.09 KB) 24/03/2021 1.1
DA14531_FAQs (PDF)(701.88 KB) 24/03/2021 1.1
入门SDK6 (HTML)(25.09 KB) 07/05/2021 2.1
使用SDK6外围驱动程序(HTML)(25.09 KB) 05/03/2021 1.6
硬件设计的抵押品
姓名 日期 版本
DA14531 17-XFBGA,WLCSP符号和脚印(25.09 KB) 13/03/2020 1.0
DA14531 FCGQFN24符号和脚印(25.09 KB) 13/03/2020 1.0
已知的限制列表
姓名 日期 版本
DA14531勘误表数据表(182.04 KB) 01/11/2019 1.0
FCC, ETSI认证
姓名 日期 版本
DA14531 EN 300 328认证测试报告(WLCSP)(1.2 MB) 04/11/2019 1.0
DA14531 EN 300 328认证测试报告(QFN)(1.21 MB) 04/11/2019 1.0
DA14531 FCC认证测试报告(QFN)(1.85 MB) 09/04/2019 1.0
DA14531 FCC认证测试报告(WLCSP)(1.84 MB) 09/05/2019 1.0
BT团体认证
姓名 日期 版本
DA14530:概要文件子系统(7.58 KB) 25/08/2020 D051783
DA14531: QDID控制器子系统(7.58 KB) 08/08/2019 D047135
DA14531: QDID主机子系统(7.58 KB) 27/08/2019 D047136
DA14531: QDID配置文件子系统(7.58 KB) 31/10/2019 D048316
其他认证
姓名 日期 版本
DA14531:蓝牙低能耗RF-PHY测试规范(1.04 MB) 08/08/2019 62000 rbt.001
RoHS,达到
姓名 日期 版本
da14531达申申报(163.83 KB) 04/11/2019 1.0
DA14531 RoHS宣言(163.83 KB) 04/11/2019 1.0
之前的软件版本
姓名 日期 版本
SmartSnippets Toolbox V5.0.12适用于Windows操作系统(1字节) 14/03/2020 5.0.12
档案
姓名 日期 版本
对话框 - 源代码 - android(2.86 MB) (仅限注册用户) 24/10/2019 3.190.16
对话框 - 源代码 - iOS(4.09 MB) (仅限注册用户) 29/10/2019 3.200.12
SDK_6.0.12.1020.2 for DA14531 and DA14585/6[包括SDK api文档](9.18 MB) (仅限注册用户) 12/12/2019 6.0.12.1020.2
sdk_6.0.12.1020.2_hotfix_001(90.61 KB) (仅限注册用户) 06/03/2020 6.0.12.1020.2
SmartSnippets Studio V2.0.10 for Linux OS(810.84 MB) 02/10/2019 2.0.10
SmartSnippets Studio V2.0.10 for Windows OS(575.68 MB) 02/10/2019 2.0.10
SmartSnippets Studio V2.0.12适用于Linux操作系统(1字节) 14/03/2020 2.0.12
SmartSnippets Studio V2.0.12 for Windows OS(1字节) 14/03/2020 2.0.12
SmartSnippets Studio V2.0.14 for Linux操作系统(870.09 MB) 28/05/2020 2.0.14
macOS的SmartSnippets Studio V2.0.14(496.8 MB) 28/05/2020 2.0.14
SmartSnippets Studio V2.0.14 for Windows OS(705.78 MB) 28/05/2020 2.0.14
SmartSnippets工具箱V5.0.10 for Linux OS(205.02 MB) 02/10/2019 5.0.10
SmartSnippets工具箱V5.0.10 for Windows OS(137.45 MB) 02/10/2019 5.0.10
SmartSnippets工具箱V5.0.12 for Linux OS(1字节) 14/03/2020 5.0.12
SmartSnippets工具箱V5.0.14 for Linux OS(162.73 MB) 28/05/2020 5.0.14
SmartSnippets工具箱V5.0.14 for Windows OS(123.2 MB) 28/05/2020 5.0.14
SW-B-002 DA14531 SDK Release Notes v.6.0.12.1020.2(179.09 KB) 12/12/2019 6.0.12.1020.2

开发工具包和参考设计

基于DA14531的硬件开发工具包
开发工具包- USB
开发工具包-专业版
SmartBond无线测距SDK
视频缩略图,点击打开并播放

DA14531产品概述视频

视频缩略图,点击打开并播放

生产线工具套件网络研讨会

视频缩略图,点击打开并播放

MikroBUS单击单板网络研讨会

视频缩略图,点击打开并播放

IOT播客

模块 关键特性
DA14531 / SmartBond TINY模块
  • 蓝牙5.1核心合格
  • 集成天线
  • 全球认证
  • Cortex-M0 + @16MHz
  • IoTMark™-BLE评分18300分
  • 23.75 ua / MHz单片机电流
  • 内存:48kB RAM, 32kB OTP &1Mb FLASH
  • 1.8 - -3.3 v的供应范围
  • + 2.2DBM最大输出功率
  • -93年dbm敏感性
  • Rx电流2mA在3V
  • Tx电流4mA在3V在0dBm
  • 接口:2xUART, SPI, I2C
  • 4-channel 10位ADC
  • 8 GPIO
  • 内置温度传感器
  • 工作温度:-40℃~ +85℃
  • 尺寸:12.5 x14.5x2.8毫米
现在从Digikey购买
现在从Avnet购买
DA16600模块
  • 低功耗无线网络
  • 低功率祝福
  • 超低功率
  • 优越的范围
联系我们
DA14531 BDE-BLEM301
  • 蓝牙5.1合格(蓝牙DID: D050903)
  • FCC / CE / RoHS认证
  • 集成高效天线
  • 支持最多3个BLE连接
  • 16 MHz 32位Arm®Cortex®M0+
  • 内存:1Mbit Flash, 48KB RAM, 144KB ROM, 32KB OTP
  • Rx电流2mA在3V
  • Tx电流4mA在3V在0dBm
  • 睡眠时1.8uA,所有RAM保留
  • 可编程Tx功率从-19dBm到+2.2 dBm
  • -93 dBm接收器灵敏度
  • 3通道正交解码器
  • 4通道11位ENOB ADC
  • 2个具有PWM功能的定时器
  • 实时时钟
  • 内置温度传感器
  • 接口:9 gpio, SPI, 2xUART, I2C
  • 操作:1.8V - 3.3V, -40°C至+85°C
  • 尺寸:12.5x14.5x2.1 mm
  • 兼容对话框da14531mod
联系你当地的对话销售代表或电子邮件12:info@bdecomm.com
DA14531洪hj - 531国际货币基金组织(imf)
  • 尺寸:5 x 4.75 x 1.3毫米
  • 包:LGA25
  • GPIOs: 12
  • 电源电压:1.1 v - 3.6 v
  • 马TX < 3.5;RX < 2.2 mA
  • 内置高性能天线(也可使用外置天线)
  • 车载天线范围:10-20m;外置天线距离:30-80m
  • 支持BLE 5.1,支持微信,MiSDK和用户开发
  • 内置1Mb FLASH,支持OTA,存储用户数据
  • 工作温度:- -40℃至+85℃
立即购买
DA14531 Honjia hj - 131 imh
  • 尺寸:4 x 4 x 1.3毫米
  • 内置高性能天线(也可使用外置天线)
  • 包:LGA17
  • GPIOs: 6
  • 电源电压:1.1 v - 3.6 v
  • 马TX < 3.5;RX < 2.2 mA
  • 车载天线范围:10-20m;外置天线距离:30-80m
  • 支持BLE 5.1,支持微信,MiSDK和用户开发
  • 内置1Mb FLASH,支持OTA,存储用户数据
立即购买

立即购买

产品 商店
da14531 - 00000 og2 WLCSP17包 逮老鼠 digikey.
da14531 fx2 - 00000 FCGQFN24包 Avnet我们 逮老鼠 digikey.
DA14531-00FXDEVKT-P 逮老鼠 digikey.
DA14531-00OGDB-P 逮老鼠 digikey.
DA14531-00FXDB-P. 逮老鼠 digikey.
DA14531-00FXDEVKT-U 逮老鼠 digikey.
回的结果

DA14531

两个星期前

SPI芯片选择在多个奴隶

发布的jackphan80点 5回复
0的问题

你好,

我正在使用Pro Dev Board在DA14531中的多个SPI传感器从站工作。我试图打开芯片选择奴隶,但我不成功。

我在BLE论坛上读过这个话题,但是不清楚如何切换到选片:

https://www.dialog-semicondiondiondimicon.com/forums/post/dialog-martbond-bluetooth-low-energy-%2%80%93-software/spi-cs-funcgpio.

https://www.dialog-seminile.com/produ亚博电竞菠菜cts/bluetooth-low-energy/da14530-and-da14531?post_id=12318#tab-support_tab_content.

以下是我的两个传感器DPS368和KX132的代码(每个传感器都经过测试,在其端口和引脚设置时工作良好)

在设置开始时,它只工作一个传感器:

spi_sel_pins.spi_cs_port = dps368_spi_cs_port;

spi_sel_pins。spi_cs_pin = DPS368_SPI_CS_PIN;

当我切换以选择另一个传感器KX132时,它不适用于该第二传感器。

GPIO_ConfigurePin(KX132_SPI_CS_PORT, KX132_SPI_CS_PIN, OUTPUT, PID_SPI_EN, true);

spi_sel_pins。spi_cs_port = KX132_SPI_CS_PORT;

spi_sel_pins。spi_cs_pin = KX132_SPI_CS_PIN;

请给我一个选择芯片的配置建议。

非常感谢,

杰克

// ===============================================================================

// ================================= 在文件user_periph_setup.c

// ===============================================================================

_spi_sel_pins spi_sel_pins;

spi_cfg_t spi_cfg;

空白GPIO_reservations(空白)

保留gpio (dps368_spi_miso, dps368_spi_miso_port, dps368_spi_miso_pin, pid_spi_di);

保留_GPIO(DPS368_SPI_MOSI,DPS368_SPI_MOSI_PORT,DPS368_SPI_MOSI_PIN,PID_SPI_DO);

保留gpio (dps368_spi_clk, dps368_spi_clk_port, dps368_spi_clk_pin, pid_spi_clk);

保留_GPIO(DPS368_SPI_CS,DPS368_SPI_CS_PORT,DPS368_SPI_CS_PIN,PID_SPI_EN);

保留_GPIO(kx132_spi_cs,kx132_spi_cs_port,kx132_spi_cs_pin,pid_spi_en);

Reserve_gpio (dps368_int, dps368_int_port, dps368_int_pin, pid_gpio);

#如果定义(CFG_PRINTF_UART2)

Reserve_gpio (uart2_tx, uart2_tx_port, uart2_tx_pin, pid_uart2_tx);

# endif

// ===============================================================================

空白set_pad_functions(空白)

spi_cfg。spi_ms = SPI_MS_MODE_MASTER;

spi_cfg。spi_cp = SPI_CP_MODE_3;

spi_cfg。spi_speed = SPI_SPEED_MODE_2MHz;

spi_cfg.spi_wsz = spi_mode_8bit;

spi_cfg。spi_cs = SPI_CS_0;

spi_cfg。spi_irq = SPI_IRQ_DISABLED;

spi_cfg.cs_pad。端口= (GPIO_PORT) spi_sel_pins.spi_cs_port;

spi_cfg.cs_pad。销= (GPIO_PIN) spi_sel_pins.spi_cs_pin;

#如果定义(__DA14531__)

//在P0_0上禁用HW RST,这样它就可以用作SPI MOSI。

gpio_disable_hw_reset();

# endif

GPIO_ConfigurePin (spi_sel_pins (GPIO_PORT)。spi_sel_pins spi_cs_port (GPIO_PIN)。spi_cs_pin, OUTPUT, PID_SPI_EN, true);

GPIO_ConfigurePin (spi_sel_pins (GPIO_PORT)。spi_sel_pins spi_clk_port (GPIO_PIN)。spi_clk_pin, OUTPUT, PID_SPI_CLK, false);

gpio_configurepin((gpio_port)spi_sel_pins.spi_do_port,(gpio_pin)spi_sel_pins.spi_do_pin,输出,pid_spi_do,false);

GPIO_ConfigurePin (spi_sel_pins (GPIO_PORT)。spi_sel_pins spi_di_port (GPIO_PIN)。spi_di_pin, INPUT, PID_SPI_DI, false);

GPIO_ConfigurePin(KX132_SPI_CS_PORT, KX132_SPI_CS_PIN, OUTPUT, PID_SPI_EN, true);

gpio_configurepin(dps368_spi_cs_port,dps368_spi_cs_pin,输出,pid_spi_en,true);

GPIO_ConfigurePin(DPS368_INT_PORT, DPS368_INT_PIN, INPUT, PID_GPIO, false);

#如果定义(CFG_PRINTF_UART2)

//配置UART2 TX Pad

gpio_configurein (UART2_TX_PORT, UART2_TX_PIN, OUTPUT, PID_UART2_TX, false);

# endif

// ===============================================================================

空白init_spi_pads (void) {

memset (&spi_sel_pins 0 sizeof (_spi_sel_pins));

spi_sel_pins.spi_cs_port = dps368_spi_cs_port;

spi_sel_pins。spi_cs_pin = DPS368_SPI_CS_PIN;

spi_sel_pins.spi_clk_port = dps368_spi_clk_port;

spi_sel_pins。spi_clk_pin = DPS368_SPI_CLK_PIN;

spi_sel_pins。spi_do_port = DPS368_SPI_MOSI_PORT;

spi_sel_pins。spi_do_pin = DPS368_SPI_MOSI_PIN;

spi_sel_pins。spi_di_port = DPS368_SPI_MISO_PORT;

spi_sel_pins。spi_di_pin = DPS368_SPI_MISO_PIN;

#如果定义(__DA14531__)

/ / spi_uses_p00 = (SPI_CS_PIN = = GPIO_PIN_0) | | (SPI_CLK_PIN = = GPIO_PIN_0) | | (SPI_DO_PIN = = GPIO_PIN_0) | | (SPI_DI_PIN = = GPIO_PIN_0);

# endif

// ===============================================================================

空白periph_init(空白)

#如果定义(__DA14531__)

//在Boost模式下,使DCDC转换器为使用的gpio提供VBAT_HIGH

syscntl_dcdc_turn_on_in_boost (SYSCNTL_DCDC_LEVEL_3V0);

其他#

//启动外设的电源域

SetBits16 (PMU_CTRL_REG PERIPH_SLEEP 0);

while (!(GetWord16(SYS_STAT_REG) & PER_IS_UP));

SetBits16 (CLK_16M_REG XTAL16_BIAS_SH_ENABLE 1);

# endif

/ /罗补丁

patch_func ();

/ /初始化设备

#如果定义(CFG_PRINTF_UART2)

/ /初始化UART2

uart_initialize (UART2 &uart_cfg);

# endif

//设置pad功能

init_spi_pads ();/ /多个奴隶

set_pad_functions ();

//启用垫子

GPIO_set_pad_latch_en(真正的);

/ /初始化SPI

spi_initialize(&spi_cfg);

空白chipSelectKx132 (void) {

GPIO_ConfigurePin(KX132_SPI_CS_PORT, KX132_SPI_CS_PIN, OUTPUT, PID_SPI_EN, true);

spi_sel_pins。spi_cs_port = KX132_SPI_CS_PORT;

spi_sel_pins。spi_cs_pin = KX132_SPI_CS_PIN;

void chipelectdps368(空白){

gpio_configurepin(dps368_spi_cs_port,dps368_spi_cs_pin,输出,pid_spi_en,true);

spi_sel_pins.spi_cs_port = dps368_spi_cs_port;

spi_sel_pins。spi_cs_pin = DPS368_SPI_CS_PIN;

// ===============================================================================

// ================================= 在文件user_periph_setup.h

// ===============================================================================

//为SPI设置引脚

#定义DPS368_SPI_CLK_PORT GPIO_PORT_0

#定义DPS368_SPI_CLK_PIN GPIO_PIN_4

#定义DPS368_SPI_MOSI_PORT GPIO_PORT_0

#define dps368_spi_mosi_pin gpio_pin_0.

#define dps368_spi_miso_port gpio_port_0.

#定义DPS368_SPI_MISO_PIN GPIO_PIN_3

#定义KX132_SPI_CS_PORT GPIO_PORT_0

#定义KX132_SPI_CS_PIN GPIO_PIN_1

#定义DPS368_SPI_CS_PORT GPIO_PORT_0

#定义DPS368_SPI_CS_PIN GPIO_PIN_7

//设置多个slave

typedef struct __spi_sel_pins

uint8_t spi_cs_port;

uint8_t spi_cs_pin;

uint8_t spi_clk_port;

uint8_t spi_clk_pin;

uint8_t spi_do_port;

uint8_t spi_do_pin;

uint8_t spi_di_port;

uint8_t spi_di_pin;

} _spi_sel_pins;

// ===============================================================================

// ================================= 在文件user_app.c

// ===============================================================================

/ /调用

chipSelectDps368 ();

//从传感器Dps368读取数据:WORKED FINE

//切换到选择另一个传感器Kx132: NOT SUCCESS (no error but cannot talk to the sensor)

chipSelectKx132 ();

两个星期前

PM_DIALOG.

嗨jackphan,

谢谢你的问题。总体思路是将每个SPI设备+的MISO/MOSI/CLK线连接在相同的引脚上,并将CS连接在不同的引脚上。我检查了你的代码,这是你已经做的。每次您想要与SPI设备“对话”时,您应该将特定设备的CS线拉到LOW。通过这样做,您将启用它,然后开始输出数据和时钟。

因此,我的推荐将是每次要与不同的SPI设备通信时配置不同的SPI_EN引脚。之后,您还需要根据特定SPI设备的配置初始化531的SPI模块。例如,它可能具有不同的频率,不同的极性等。

因此,您可能需要为SPI使用不同的配置结构—spi_cfg_t。

还请查看SPI外设示例,以便了解如何将SPI CS配置为low - spi_cs_low()和high - spi_cs_high()。

如果您已经完成了上述过程,我建议使用逻辑分析仪工具,探测所有SPI线并共享捕获。

谢谢,PM_DIALOG.

两个星期前

jackphan 80点

嗨PM_Dialog,

谢谢你的快速回复。

您有一个展示如何选择芯片选择的示例吗?

或者你可以放一个代码片段来切换芯片选择吗?

谢谢,

杰克

1周前

PM_DIALOG.

嗨jackphan,

你应该设置SPI EN为LOW - spi_cs_low(),当你想与特定的SPI设备“对话”时,

假设您将SPI_DEVICE_1和SPI_DEVICE_2相应地具有SPI_EN_1和SPI_EN_2。

如果你想与SPI_DEVICE_1“对话”,你应该设置SPI_EN_1为LOW - spi_cs_low() - SPI_EN_2为HIGH - spi_cs_high()。

谢谢,PM_DIALOG.

3天前

jackphan 80点

你好,

通过对话框工程师的支持,我可以成功获取配置以选择我的多个传感器从站。我想和你共享我的片段代码(基于项目BLE_PRESSURE_SENSENSOR_BMP388的示例):

#定义DPS368_SPI_CLK_PORT GPIO_PORT_0
#定义DPS368_SPI_CLK_PIN GPIO_PIN_4

#定义DPS368_SPI_MOSI_PORT GPIO_PORT_0
#define dps368_spi_mosi_pin gpio_pin_0.

#define dps368_spi_miso_port gpio_port_0.
#定义DPS368_SPI_MISO_PIN GPIO_PIN_3

#定义KX132_SPI_CS_PORT GPIO_PORT_0
#定义KX132_SPI_CS_PIN GPIO_PIN_1

#定义DPS368_SPI_CS_PORT GPIO_PORT_0
#定义DPS368_SPI_CS_PIN GPIO_PIN_7

//在一个传感器
static int dps368WriteTwoBytes(uint8_t addr, uint8_t txValue)常量

int ret = SPI_TRANSMITED_FALSE;
uint8_t tmp [2];

GPIO_SetInactive (DPS368_SPI_CS_PORT DPS368_SPI_CS_PIN);//设置物理引脚LOW
spi_cs_low();// SPI集芯片选择逻辑低

tmp[0] = addr & 0x7F;
tmp [1] = txValue;

ret = spi_send(&tmp, 2, SPI_OP_BLOCKING);

GPIO_SetActive (DPS368_SPI_CS_PORT DPS368_SPI_CS_PIN);//设置物理引脚高
spi_cs_high();// SPI集芯片选择逻辑高
返回受潮湿腐烂;

//在另一个传感器
static bool spiRead(uint8_t addr, uint8_t * const data, uint8_t len) uint8_t addr, uint8_t len

int ret = SPI_TRANSMITED_FALSE;
addr = addr |;

GPIO_SetInactive (KX132_SPI_CS_PORT KX132_SPI_CS_PIN);//设置物理引脚LOW
spi_cs_low();// SPI集芯片选择逻辑低

//设置要读取的寄存器地址
if (spi_send(&addr, 1, SPI_OP_BLOCKING) == SPI_TRANSMITED_CORRECT) {

ret = spi_receive(data, len, SPI_OP_BLOCKING);

GPIO_SetActive (KX132_SPI_CS_PORT KX132_SPI_CS_PIN);//设置物理引脚高
spi_cs_high();// SPI集芯片选择逻辑高

if (ret == SPI_TRANSMITED_CORRECT){返回true;}
Else {return false;}

空白periph_init(空白)

......
//在函数集的末尾:
spi_set_cs_mode (SPI_CS_GPIO);

空白set_pad_functions(空白)

#如果定义(__DA14531__)
//在P0_0上禁用HW RST,这样它就可以用作SPI MOSI。
gpio_disable_hw_reset();
# endif

GPIO_ConfigurePin(KX132_SPI_CS_PORT, KX132_SPI_CS_PIN, OUTPUT, PID_GPIO, true);
GPIO_ConfigurePin(DPS368_SPI_CS_PORT, DPS368_SPI_CS_PIN, OUTPUT, PID_GPIO, true);

GPIO_ConfigurePin(DPS368_SPI_MISO_PORT, DPS368_SPI_MISO_PIN, INPUT, PID_SPI_DI, false);
GPIO_ConfigurePin(DPS368_SPI_MOSI_PORT, DPS368_SPI_MOSI_PIN, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(DPS368_SPI_CLK_PORT, DPS368_SPI_CLK_PIN, OUTPUT, PID_SPI_CLK, false);

这里的关键是:
.在调用函数spi_cs_low()之前,我们应该调用函数gpio_setinactive(..),以便物理地将此引脚设置为低
.在调用spi_cs_high()函数之前,我们应该调用GPIO_SetActive(..)函数来物理地设置这个PIN高

在user_app.c文件中,我们只是像往常一样调用函数来读取数据。每个传感器文件中的功能已经通过选择正确的选定引脚来处理。
这是我的代码片段在user_app.c:

kx132GetAccelData ();
dps368ReadTemperature ();

我们不需要从两个传感器读取数据之间有任何代码。

我希望这对你有所帮助。
杰克

3天前

PM_DIALOG.

嗨jackphan,

很高兴您能够与您的SPI设备“对话”。如果你发现任何有用的答案,请标记为“接受”。

也感谢你的反馈/评论。他们将对其他社区非常有帮助。

如果您有新的问题/问题,请提出一个新的论坛门票。

谢谢,PM_DIALOG.