该SmartBond DA14682和DA14683是世界上第一个智能家居,工业和符合最高安全标准的可穿戴式设备的单芯片解决方案。这些高度集成的系统级芯片(SoC)的设备支持蓝牙5以及蓝牙网,并包括一系列的专用功能,以确保消费者和开发尖端的安全性。
作为我们SmartBond系列的一部分,无论是系统级芯片提供从最低的功耗和占用空间最小业界领先的性能。其灵活的架构可以确保充足的加工能力,当你需要它,而省电,当你不知道的。它也允许设备管理多传感器阵列并且能够始终保持接通感测。
两个设备都提供了广泛的内存容量,仅在其内存配置中不同。具体而言,DA14683支持无限的外部闪光灯,以获得最大的设计灵活性,而DA14682包括8米上的车载闪光灯,使其适用于具有狭小限制的应用。亚博国际官网平台网址这两个选项都允许您从空中更新中受益。
为了进一步简化开发,我们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物联网传感器开发套件
SDK 5.0.x介绍
SDK 5.0.x的介绍(中国)
生产线工具套件网络研讨会
DA1468x
4个月前
SPI时间问题
张贴了batman230865分 12回复嗨
我对DA14683-00A9DEVKT-P上的SPI timing有问题,请参考附件的图片,我使用SPI函数写命令到其他芯片,它工作,但是CS falling和第一个SCLK之间的timing时间太长,请告诉我如何缩短这个周期。
谢谢~~
附件 | 大小 |
---|---|
SPI时机 | 1.86 MB |
3个月前
我的代码如下。我们的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,传输[i] .wbuf,transfers [i] .rbuf,
传输[i] .length,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.length = 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,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_PI_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);
}
/ **
* \电后短暂的初始化外设领域。
*
*/
静态void prvsetuphardware(void)
{
/ * init硬件* /
PM_SYSTEM_INIT(PERIPH_INIT);
hw_wkup_init(空);
}
谢谢~~
2个月前
你好呀,
我认为它应该在platform_devices.h中配置为slave。
您是否有任何其他SPI接口来复制此问题?在教程之后,所有SPI事务都应该正常工作。
它是定制董事会,或我们的任何DKS吗?
谢谢,PM_DIALOG.
4个月前
你好呀,
正如你在之前的论坛帖子中提到的,请尝试遵循SPI适配器概念教程。如图6YOIU可以在图6中看到。使用逻辑分析仪捕获的19个SPI写入事务,SPI写入事务中的CS没有任何定时问题。使用逻辑分析仪工具可以探测SPI线而不是使用示波器非常有帮助。
谢谢,PM_DIALOG.