首页 > 服务支持 > 常见问题
在多个连接的情况下,所有外围设备/中央设备是否共享相同的GATT数据库?

根据蓝牙规范,GATT服务器/数据库是单一设备个体。因此,无论各个角色如何,所有连接都将访问相同的GATT DB。如果两个连接需要不同的配置文件,则需要在GATT数据库上保留两个实例,并为每个连接关联一个实例。

Balun是否与BLE集成在PSoC 6 MCU中?

Balun与BLE集成在PSoC 6 MCU中,但阻抗不是50欧姆。因此,您仍然需要一个外部匹配网络来匹配50欧姆。

带有BLE的PSoC 6 MCU是否需要外部kHz晶振才能实现低功耗运行?

kHz晶振是可选的。采用BLE的PSoC 6 MCU支持使用Precision ILO(PILO)的无晶体工作模式,可用于BLE低功耗模式时序。

带有BLE的PSoC 6 MCU是否支持蓝牙5的远程功能?

不支持。

无论蓝牙连接数是多少,PSoC 6 MCU BLE中的CPU利用率是否相同?

不会,每次额外连接的CPU负载都会增加,具体取决于数据加载,连接间隔配置等。

白名单/解析列表中可以添加的最大设备数是多少?

白名单/解析列表中的最大设备数可以是16。

支持BLE的PSoC 6 MCU有多少个绑定设备?

尽管BLE组件可以支持的绑定设备的最大数量没有限制,但BLE组件中绑定设备的数量限制为128,以匹配PSoC 6 MCU BLE中可用的工作闪存大小。

带有BLE的PSoC 6 MCU是否支持Mesh?

目前在带有BLE器件的PSoC 6 MCU上不支持BLE Mesh。此功能将在未来的软件更新中提供。

是否可以将带有BLE的PSoC 6 MCU中的2.4-GHz RF硬件用于正常的Wi-Fi连接?

无法使用BLE 2.4-GHz RF硬件进行Wi-Fi连接。 RF硬件只能用于BLE。有关Wi-Fi,请参阅Cypress Wi-Fi产品组合网页

PSoC 6 MCU中的BLE固件是否与PSoC 4 BLE固件兼容?

对于带有BLE的PSoC 4和PSoC 6 MCU,BLE堆栈是不同的,因此组件API不同。 API命名约定参数传递机制和API结果报告从PSoC 4到带有BLE的PSoC 6 MCU都有所变化。只需最少的工作量,就可以将现有的PSoC 4 BLE代码移植到带有BLE的PSoC 6 MCU中。

为什么固件升级失败?

图: CySmart PC OTA 进度窗口

1.jpg

  • 确保选择了正确的. cyacd 文件。

  • 签入BLE组件引导程序设置, 并确保正确设置引导程序特性的数据字节大小。

  • 如果建立连接失败, 请检查您的固件, 并查找自定义主板问题。

  • 如果发生身份验证失败, 请确保安全设置与项目设置相匹配。

  • 如果发现引导程序服务/启用通知失败, 则可能表明设备可能未进入引导程序模式。使设备再次进入引导程序模式, 然后尝试 OTA。检查项目引导程序的特性设置也正确。

  • 如果传输固件映像失败, 请确保选择了正确的. cyacd 文件。确保在固件中正确处理闪存读/写操作。

为什么固件升级在 CySmart PC 的身份验证阶段失败?

在大多数情况下, OTA 在身份验证阶段失败, 是因为对等设备中的安全设置不匹配。请确保 CySmart PC 应用程序的安全设置与 OTA 堆栈项目的安全措施匹配。

如何减少装载引导程序的项目大小?
  • 检查引导程序项目中添加的命令。为此, 请双击引导程序组件, 然后删除项目中不需要的命令

  • 在引导程序项目中, 导航项目 > 生成设置 > 编译 器 > 优化更改为大小 (从调试)

  • 删除不必要的 UART 打印

  • 要减少消耗的 RAM 大小, 请尝试减小堆栈大小

将新的 Bootloadable api 添加到固定堆栈 OTA 中的项目时出错。为什么?

这是因为 Bootloadable 项目没有这些 api 的定义,因此您需要将 api 保留在链接器脚本中。可以从引导加载程序项目中得到 api 的定义。首先, 将 api 保留在脚本文件 cm0gcc 中,将引导程序项目设置为活动状态。打开引导程序项目中的 cm0gcc 文件,添加 "保留 api "。保存并生成项目并运行 mk. bat 文件。在 Bootloadable 项目中,将 API 的声明添加为 ota_mandatory 文件。

虽然在 CySmart Android 应用程序/PC 应用程序上启用了身份验证,但外设连接时不要求输入密钥,为什么?(CySmart iOS 中不会发生这种情况)

CySmart iOS 在建立连接时发送身份验证请求。对于 CySmart PC 和 CySmart Android, 用户需要按 "对" 按钮发送身份验证请求,否则需要通过外围固件发送身份验证请求。

当一台设备尝试第二次连接到类似设备时, 为什么会出现身份验证失败?

前一电话可能存储了该设备的配对信息 (绑定到设备), 而设备可能没有粘合或已删除连接信息。因此, 电话必须手动删除之前的信息重新配对。

尝试从客户端设备读取/写入服务器的特定特性时,为什么会失败?

确保外围设备具有该特征的读写属性。如果特性的权限需要身份验证/授权, 请确保提供了这些属性,且确保服务器固件中设置的属性大小小于或等于客户端试图写入的大小。

我的中心是一款智能手机, 外设是 CyBLE 4.1 设备。我无法让我的设备使用白名单过滤。为什么?

大多数智能手机都使用解析的专用地址, 所以每次电话都使用随机地址 (不相同)。在4.1 中, 控制器不解析地址, 但主机解释。可以使用以下方法仅连接到一个特定设备。

在应用程序中, 使用绑定但不启用白名单。因此, 每次连接同一设备 (如果只有一个设备) 时, 连接句柄将为4。如果连接新设备, 连接句柄将为3。在 CYBLE_EVT_DEVICE_CONNECTED 事件中, 检查连接句柄。 如果连接句柄不是 4, 请立即断开与外围设备的连接。如果已绑定设备连接 (使用可解析的专用地址), 则连接句柄将为4。

我将 MTU 大小设置为50。但是, 我无法发送超过20的数据字节。为什么?

如果中心设备尚未发送 MTU 交换请求, 则可能发生此情况。默认情况下, MTU 大小将设置为23字节。如果要将MTU大小设置为23以上, 则中心设备必须发送 MTU 交换请求。

根据BLE规范,通过BLE通知发送的BLE数据包不会在应用层中得到确认。这是否会导致PSoC BLE设备中的数据包丢失或无序数据包传送?

在使用通知时, 应用程序层中不会有任何确认, 但在链接层中会有确认。这意味着当对等方发送数据包时, 除非发件人在链接层收到确认, 否则不会发送下一个数据包。这样可以确保没有丢失的数据包。

要确保数据包的传递顺序正确, 应及时处理在应用程序层中读取接收到的数据包。这要求应用程序在接收通知时不应忙于其他任务。

为什么设备名称不显示在 iOS 电话中?

iOS 只支持一些特定的配置文件 (例如 HID、ANCS), 用于在蓝牙设置中列出设备名称。参考: 

https://support.apple.com/en-us/HT204387

只有当服务器/外围设备拥有这些服务时, iOS 设备才会在其蓝牙设备列表中显示您的设备。

如何在同一时间将 CyBLE 设备设置为广播和观察员?

在 BLE组件中, 将设备置为中心和外围GAP角色。对于广播角色, 请按如下方式进行广告设置:

  • 发现模式: 不可探测

  • 广告: 非连通无向广告

对于观察者角色, 请将以下代码添加到 CYBLE_EVT_STACK_ON 事件.

cyBle_discoveryInfo. discProcedure = CYBLE_GAPC_OBSER_PROCEDURE;

CyBle_GapcStartScan ();//API 开始扫描

CyBle_GappStartAdvertisement ();//启动广告的 API

随着这些变化, 该设备将作为广播和观察员。

如果我从 PC 上断开 MiniProg3(其保持连接在主板上),固件不会运行?

是的, 如果 MiniProg3 与主机 PC 断开连接并与主板相连, 则 XRES 将保持在电平低的状态, PSoC 在复位时保持复位状态。

如果在调试时重置设备, 调试会话是否会丢失?

调试项目时不能使用硬件重置,但PSoC Creator允许在调试时重新设置软件。

MiniProg3 在 PSoC Programmer/PSoC 创建者中被检测到, 但为什么没有实现连接?

一般情况下, 当另一个程序在使用 MiniProg3 时会发生这种情况。请关闭 PC 上的其他程序, 或断开 MiniProg3 与其他程序的连接来解决此问题。

是否可以使用 "调试选择" 选项设置为 GPIO 进行调试?

可以。但是,取决于调试针脚在主板上的连接位置, 如果外部信号受到干扰,调试数据可能会损坏。另外, 如果将 "调试选择" 选项设置为 GPIO, 则不能使用 "附加到运行目标" 功能。

为什么我在PSoC Programmer中找不到器件系列中的器件?

将PSoC Programmer中的“Auto Detection”功能设置为ON。如果不这样做,请确保正确设置“协议”选项,因为PSoC Programmer会根据此设置过滤一些设备。另外,请确保您拥有 www.cypress.com 上最新版本的PSoC Programmer软件。

我的程序可以在PSoC Creator中给器件编程,但为什么无法使用PSoC Programmer?

在PSoC Programmer中未正确选择设备器件号时, 可能会发生这种情况。请注意, PSoC Programmer可能不会直接检查设备系列中的器件号,但会检查是否创建了十六进制文件的器件号, 以及与所选的器件号是否相同。建议在PSoC Programmer中选择 "自动检测" 功能,以便自动选择器件号。

INL和DNL在ADC中意味着什么?
  • DNL - 差分非线性:对于理想的ADC来说,可以输出分为2n 个均匀步长。任何偏离理想步长宽度的都可称为差分非线性(DNL),它被表示为计数。DNL是每个 ADC 特定体系结构的一个功能,无法通过校准消除DNL。

  • INL - 积分非线性:DNL累积误差后产生总积分非线性(INL)。可以理解为它是距离ADC理想斜率和中心测量最大的偏差。它被表示为计数。INL 是每个 ADC 特定体系结构的一个功能,无法通过校准消除INL。