SmartBond DA14682和DA14683是世界上第一款适用于符合最高安全标准的智能家居,工业和可穿戴设备的单芯片解决方案。这些高度集成的片上系统(SOC)设备支持蓝牙5以及蓝牙网格,包括一系列专用功能,以确保消费者和开发人员的尖端安全性。
作为我们SmartBond系列的一部分,SOC的一部分是从最低功耗和最小占地面积提供行业领先的性能。当您没有时,它们的灵活架构可确保当您需要时提供充足的处理能力。它还允许设备管理多传感器阵列并启用始终如一地进行感应。
这两种设备都提供广泛的内存容量,只是在内存配置上有所不同。具体来说,DA14683支持无限的外部Flash,以实现最大的设计灵活性,而DA14682包括8mbits的板载Flash,使其成为空间有限的应用程序的理想选择。雷竞技安卓下载这两个选项都允许您从无线更新中获益。
为了进一步简化您的开发,我们的SmartSnippets™软件和多功能硬件开发套件可帮助您优化您的软件供功耗。
生命周期状态
好处
最高安全级别
支持蓝牙网格
IPv6连接
最低系统功率
最低系统BOM.
最小的系统规模
雷竞技安卓下载
穿戴
聪明的家
苹果Homekit
蓝牙网格
云连接的应用程序雷竞技安卓下载
工业
人类界面设备
虚拟现实遥控器
银行业
包
AQFN-60(6.0 x 6.0 x 0.9 mm)
WLCSP-53 (3.5 x 3.0 x 0.5 mm)
SmartBond™DA14583 IOT传感器开发套件 - 快速入门视频
SmartBond™DA14583 IOT传感器开发套件
SDK 5.0.x介绍
SDK 5.0.x简介(中文)
生产线工具套件网络研讨会
DA1468x
5个月前
SPI时间问题
张贴了蝙蝠侠230865分 12个回复嗨
我对DA14683-00A9DEVKT-P上的SPI timing有问题,请参考附件的图片,我使用SPI函数写命令到其他芯片,它工作,但是CS falling和第一个SCLK之间的timing时间太长,请告诉我如何缩短这个周期。
谢谢~~
附件 | 大小 |
---|---|
SPI时机 | 1.86 MB |
4个月前
我的代码如下。我们的SPI设备是RHS2116https://intantech.com/files/Intan_RHS2116_datasheet.pdf
da14683-00a9devkt-p.
========== gpio_map_config.h ==================.
#定义HW_GPIO_PORT_MT6381_SPI_CLK HW_GPIO_PORT_3
#定义HW_GPIO_PIN_MT6381_SPI_CLK HW_GPIO_PIN_0
#定义HW_GPIO_PORT_MT6381_SPI_DI HW_GPIO_PORT_3
#定义HW_GPIO_PIN_MT6381_SPI_DI HW_GPIO_PIN_1
#定义HW_GPIO_PORT_MT6381_SPI_DO HW_GPIO_PORT_3
#定义HW_GPIO_PIN_MT6381_SPI_DO HW_GPIO_PIN_2
#define hw_gpio_port_mt6381_spi_csn hw_gpio_port_3.
#定义HW_GPIO_PIN_MT6381_SPI_CSN HW_GPIO_PIN_3
========== platform_devices.h ==================.
SPI_BUS (SPI1)
Spi_slave_device (spi1, mt6381_spi, hw_gpio_port_mt6381_spi_csn, hw_gpio_pin_mt6381_spi_csn, hw_spi_word_8bit, hw_spi_pol_low, hw_spi_pha_mode_0, hw_spi_freq_div_8, hw_dma_channel_0);
SPI_BUS_END
========== AD_SPI.C ==================.
Void ad_spi_complex_transaction (spi_device dev, spi_transfer_data * transfer_size, size_t count)
{
Spi_device_config *device = (Spi_device_config *) dev;
常量HW_SPI_ID ID =设备 - > bus_id;
size_t我;
ad_spi_device_acquire(dev);
ad_spi_bus_acquire (dev);
ad_spi_bus_activate_cs(DEV);
for(i = 0; i
如果(转移[我].rbuf) {
hw_spi_writeread_buf (id、转移[我]。wbuf,转移[我].rbuf,
转移[我]。长度、ad_spi_wait_event设备);
其他}{
hw_spi_write_buf (id、转移[我]。wbuf,转移[我]. length,
ad_spi_wait_event、设备);
}
其他}{
hw_spi_read_buf(ID,传输[i] .rbuf,传输[i] .length,
ad_spi_wait_event、设备);
}
OS_EVENT_WAIT(设备- > bus_data - >事件,OS_EVENT_FOREVER);
}
ad_spi_bus_deactivate_cs(DEV);
ad_spi_bus_release (dev);
ad_spi_device_release(dev);
}
==========。SPI任务==================
/ *私人宏------------------------------------------------------------- * /
static spi_device mt6381_spi_handle = NULL;
/ * SPI / GPIO初始化* /
uint8_t SPI_GPIO_Init(空白)
{
/ / SPI
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_CLK, HW_GPIO_PIN_MT6381_SPI_CLK, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_SPI_CLK);
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_DI, HW_GPIO_PIN_MT6381_SPI_DI, HW_GPIO_MODE_INPUT, HW_GPIO_FUNC_SPI_DI);
hw_gpio_set_pin_function(hw_gpio_port_mt6381_spi_do,hw_gpio_pin_mt6381_spi_do,hw_gpio_mode_output,hw_gpio_func_spi_do);
hw_gpio_set_pin_function(HW_GPIO_PORT_MT6381_SPI_CSN,HW_GPIO_PIN_MT6381_SPI_CSN,HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_SPI_EN);
hw_gpio_set_active (HW_GPIO_PORT_MT6381_SPI_CSN HW_GPIO_PIN_MT6381_SPI_CSN);
返回HAL_STATUS_OK;
}
/ * * / SPI打开设备
uint8_t spi_open_device(void)
{
ad_spi_init ();
mt6381_spi_handle = ad_spi_open (MT6381_SPI);
如果(NULL == mt6381_spi_handle)
{
printf (" ad_spi_open失败! !”);
goto清理;
}
返回HAL_STATUS_OK;
清理:
返回HAL_STATUS_ERROR;
}
/ * SPI闭装置* /
uint8_t SPI_Close_Device(空白)
{
如果(零! = mt6381_spi_handle)
{
ad_spi_close(mt6381_spi_handle);
mt6381_spi_handle = null;
}
返回HAL_STATUS_OK;
}
UINT8_T RHS2116_SPI_WRITE(UINT16_T REG_ADDRESS,UINT16_T REG_DATA)
{
UINT8_T WBUF [4] = {0};// for SPI写缓冲区
uint8_t Rbuf[4] = {0};//为SPI读取缓冲区
spi_transfer_data spi_transfer_cfg;
spi_transfer_cfg.wbuf =&wbuf;
spi_transfer_cfg。rbuf = &Rbuf;
spi_transfer_cfg。长度= 4;
WBUF [0] =(REG_ADDRESS >> 8)&0xFF;
wbuf [1] = reg_address&0xff;
Wbuf[2] = (reg_DATA>> 8) & 0xff;
Wbuf[3] = reg_DATA & 0xff;
ad_spi_complex_transact(mt6381_spi_handle,&spi_transfer_cfg,1);
// printf的( “SPI读出:%d,%d,%d,%d \ n \ r”,RBUF [0],RBUF [1],RBUF [2],RBUF [3]);
返回HAL_STATUS_OK;
}
空白SPI_App_Task (void * pvParameters)
{
uint8_t system_result = HAL_STATUS_OK;
system_result = SPI_GPIO_Init();
system_result = SPI_Close_Device();
system_result = spi_open_device();
RHS2116_SPI_WRITE(0xC0FF,0x0000);//读(255),16'b11000000111111111111111111111111111111111111111116'B000000000000000000
RHS2116_SPI_Write(0x8020,0×0000);// WRITE(32,0x0000),16'b1000000000100000 16'b0000000000000000
}
谢谢~~~
3个月前
你好,
我跟着你提供的代码,如下,但仍然没有工作,我注意到了这个SPI接口配置模式设置为[主],而不是[SLAVE],我是否需要修改的“platform_devices.h”的代码?
好像要[SLAVE]了!
========== platform_devices.h ==================.
SPI_BUS (SPI1)
Spi_slave_device (spi1, mt6381_spi, hw_gpio_port_mt6381_spi_csn, hw_gpio_pin_mt6381_spi_csn, hw_spi_word_8bit, hw_spi_pol_low, hw_spi_pha_mode_0, hw_spi_freq_div_8, hw_dma_channel_0);
SPI_BUS_END
Static const gpio_config gpio_cfg[] = {
//系统设置为[Master],输出时钟信号
// mt6381_spi_clk.
HW_GPIO_PINCONFIG(HW_GPIO_PORT_MT6381_SPI_CLK, HW_GPIO_PIN_MT6381_SPI_CLK, HW_GPIO_PORT_MT6381_SPI_CLK, HW_GPIO_PIN_MT6381_SPI_CLK, OUTPUT_PUSH_PULL, SPI_CLK, true),
//引脚用于捕获数据
/ / MT6381_SPI_DI
HW_GPIO_PINCONFIG(HW_GPIO_PORT_MT6381_SPI_DI,HW_GPIO_PIN_MT6381_SPI_DI,INPUT,SPI_DI,真)
//引脚输出数据
/ / MT6381_SPI_DO
HW_GPIO_PINCONFIG(HW_GPIO_PORT_MT6381_SPI_DO, HW_GPIO_PIN_MT6381_SPI_DO, HW_GPIO_PORT_MT6381_SPI_DO, HW_GPIO_PORT_MT6381_SPI_DO, HW_GPIO_PIN_MT6381_SPI_DO, OUTPUT_PUSH_PULL, SPI_DO, true),
/ *
* CS引脚使用MT6381模块执行事务时使用。
*由于系统设置为[Master],它驱动这行。
*/
/ / MT6381_SPI_CSN
HW_GPIO_PINCONFIG(HW_GPIO_PORT_MT6381_SPI_CSN, HW_GPIO_PIN_MT6381_SPI_CSN, HW_GPIO_PORT_MT6381_SPI_CSN, HW_GPIO_PIN_MT6381_SPI_CSN, OUTPUT_PUSH_PULL, SPI_EN, true),
// hw_gpio_pinconfig(hw_gpio_port_1,hw_gpio_pin_2,输出,spi_clk,true),
HW_GPIO_PINCONFIG_END //这对于结构的正确终止非常重要
};
静态无效periph_init(无效)
{
/ *……*/
/ *……*/
/ *配置SPI引脚* /
hw_gpio_configure(gpio_cfg);
}
/ **
* \电后短暂的初始化外设领域。
*
*/
prvsetuhardware (void)
{
/ * init硬件* /
PM_SYSTEM_INIT(PERIPH_INIT);
hw_wkup_init(空);
}
谢谢~~
2个月前
你好呀,
我认为它应该在platform_devices.h中配置为slave。
你有任何其他SPI接口复制这个问题吗?按照本教程的要求,所有SPI事务都应该能够正常工作。
它是定制董事会,或我们的任何DKS吗?
谢谢,PM_DIALOG.
5个月前
你好呀,
正如你在之前的论坛帖子中提到的,请尝试遵循SPI适配器概念教程。如图6YOIU可以在图6中看到。使用逻辑分析仪捕获的19个SPI写入事务,SPI写入事务中的CS没有任何定时问题。使用逻辑分析仪工具可以探测SPI线而不是使用示波器非常有帮助。
谢谢,PM_DIALOG.