SmartBond DA14682和DA14683是全球首个满足最高安全标准的智能家居、工业和可穿戴设备单芯片解决方案。这些高度集成的芯片上系统(SoC)设备支持蓝牙5和蓝牙网格,并包括一系列专用功能,以确保消费者和开发人员的尖端安全性。
作为SmartBond系列产品的一部分,这两种soc均以最低的功耗和最小的占地面积提供业界领先的性能。他们灵活的体系结构确保了在您需要的时候有足够的处理能力,而在您不需要的时候节省了电力。它还允许设备管理多传感器阵列,并启用始终在线传感。
这两种设备都提供广泛的内存容量,只是在内存配置上有所不同。具体来说,DA14683支持无限的外部Flash,以实现最大的设计灵活性,而DA14682包括8mbits的板载Flash,使其成为空间有限的应用程序的理想选择。亚博国际官网平台网址这两个选项都允许您从无线更新中获益。
为了进一步简化您的开发,我们的smarnippets™软件和多功能硬件开发工具包帮助您优化软件的功耗。
生命周期状态
好处
最高安全级别
支持蓝牙网格
IPv6连接
最低系统功率
最低系统物料清单
最小的系统规模
亚博国际官网平台网址
穿戴
智能家居
苹果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物联网传感器开发工具包-快速入门视频
SmartBond™DA14583物联网传感器开发工具包
SDK 5.0。x的介绍
SDK 5.0。x介绍(中文)
线上工具箱研讨会
DA1468x
4个月前
我不能从DA14683-00A9DEVKT-P的SPI读取函数获得任何数据
发布的batman230865点 5回复嗨
我的SPI读功能有问题,DA14683用SPI接口和其他芯片通信,我用SPI功能向这个芯片写命令成功,但从这个芯片读数据失败,我得不到任何读数据。我用示波器确保SPI信号正常传输,MISO和MOSI的信号是正确的,但是我在软件上读不到任何数据,我的代码有什么问题?
我的代码如下。
========== gpio_map_config.h ==================
#定义HW_GPIO_PORT_MT6381_SPI_CLK HW_GPIO_PORT_3
#定义HW_GPIO_PIN_MT6381_SPI_CLK HW_GPIO_PIN_1
#定义HW_GPIO_PORT_MT6381_SPI_DI HW_GPIO_PORT_2
#定义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
#定义HW_GPIO_PORT_MT6381_SPI_CSN HW_GPIO_PORT_3
#定义HW_GPIO_PIN_MT6381_SPI_CSN HW_GPIO_PIN_0
========== 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
========== SPI的任务 ==================
#定义MT6381_SPI_BUFFER_LEN (uint8_t) 32
static spi_device mt6381_spi_handle = NULL;
static uint8_t spi_tx_buf[MT6381_SPI_BUFFER_LEN] = {0};
static uint8_t spi_rx_buf[MT6381_SPI_BUFFER_LEN] = {0};
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);
ad_spi_init ();
mt6381_spi_handle = ad_spi_open (MT6381_SPI);
spi_tx_buf[0] = (reg_ADDRESS>> 8) & 0xff;
spi_tx_buf[1] = reg_ADDRESS & 0xff;
spi_tx_buf[2] = (reg_DATA>> 8) & 0xff;
spi_tx_buf[3] = reg_DATA & 0xff;
Tx_len = 4;
Rx_len = 4;
ad_spi_transaction (mt6381_spi_handle, spi_tx_buf, tx_len, spi_rx_buf, rx_len);
printf (" SPI读出:% d % d % d % d !r \ n \”,(int) spi_rx_buf [0], (int) spi_rx_buf [1], (int) spi_rx_buf [2], (int) spi_rx_buf [3]);
===========================================
spi_rx_buf总是零
谢谢。
4个月前
嗨
谢谢回复,在调试模式下,spi_rx_buf不能读任何字节,但有一件事我想确认,我们的SPI模式是32位双工传输(同时写和读),请参考附件的图片,这是示波器图片SPI信号(只显示SCLK &味噌)是正确的,下面的代码是正确的? ?好像是先写后读?我不确定
spi_tx_buf[0] = (reg_ADDRESS>> 8) & 0xff;
spi_tx_buf[1] = reg_ADDRESS & 0xff;
spi_tx_buf[2] = (reg_DATA>> 8) & 0xff;
spi_tx_buf[3] = reg_DATA & 0xff;
Tx_len = 4;
Rx_len = 4;
ad_spi_transaction (mt6381_spi_handle, spi_tx_buf, tx_len, spi_rx_buf, rx_len);
=============================================================
Void ad_spi_complex_transaction (spi_device dev, spi_transfer_data * transfer_size, size_t count)
{
Spi_device_config *device = (Spi_device_config *) dev;
const HW_SPI_ID id = device->bus_id;
size_t我;
ad_spi_device_acquire (dev);
ad_spi_bus_acquire (dev);
ad_spi_bus_activate_cs (dev);
For (i = 0;我<数;+ + i) {
如果(转移[我].wbuf) {
如果(转移[我].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、转移[我]。rbuf,转移[我]. 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);
}
Void ad_spi_transact(spi_device dev, uint8_t *wbuf, size_t wlen, uint8_t *rbuf,),
size_t rlen)
{
sp_transfer_data传输[2]= {
{wbuf, NULL, wlen},
{null,rbuf,rlen}
};
ad_spi_complex_transact (dev,转移,1);
}
谢谢~ ~
附件 | 大小 |
---|---|
圖片2. png | 2.1 MB. |
4个月前
你好,
你能不能试着跟上SPI适配器的概念教程?请使用类似于5.6节中的prvSPITask_ECHO()任务的代码。环回测试任务代码。如图18所示,使用逻辑分析仪捕获的SPI双工事务,ad_spi_complex_transact()工作正常。
谢谢,PM_Dialog
4个月前
嗨
我现在可以得到SPI读取数据,但是仅仅使用你建议的类似代码是不够的,之后,我改变了SPI GPIO引脚设置,最后我们可以得到SPI读取数据
原始SPI GPIO引脚设置
SPI_CS:销3.0
SPI_CLK: pin3.1
SPI_DI: pin2.1
SPI_DO: pin3.2
最新的SPI GPIO引脚设置
SPI_CS:销3.0
SPI_CLK: pin3.1
SPI_DI: pin3.3
SPI_DO: pin3.2
这是否意味着所有SPI引脚必须配置相同的端口?
谢谢~ ~
4个月前
你好,
谢谢你的在线问题。ad_spi_transact()调用ad_spi_complex_transact(),后者调用hw_spi_read_buf()来通过SPI读取字节。请您在调试代码中运行您的代码,在hw_spi_read_buf()中添加一个断点,并检查ii是否正常运行?
在调试模式下,当调用ad_spi_transact()时,spi_rx_buf是否包含您想要读取的字节?
能否请你用逻辑分析仪工具探测SPI线并分享一张截图?
您还可以尝试使用ad_spi_write()而不是ad_spi_transact()来执行只写事务。
谢谢,PM_Dialog