Thread 中讨论的其他器件: CC2650
我将 LAUNCHXL-CC2650 Launchpad 与 CC320AUBOOST 配合使用。 我使用 i2secho 演示程序(用于 I2S 传输)和 project_zero (用于蓝牙)的组合。
我创建了一个无限事务列表。 每个事务都指向两个64字节的音频缓冲器(A、B)中的一个。 每个事务的后续操作都指向另一个事务。
当我启动程序时、I2S 有时会正确启动并保持正常运行。 但在许多情况下、I2S 正确启动、但在短随机时间后停止。
我尝试确保问题不是由 BLE 任务与 i2secho 任务的任何干扰引起的:我将 I2S 内部优先级设置为1、以确保蓝牙堆栈不会窃取 I2S 中断所需的时间。 我还尝试注释 ProjectZero_init()函数中的 BLE 服务初始化以禁用 BLE。 这两种措施都不会改变情况。
为了查看出了什么问题、我将引脚切换器置于以下函数中:I2SCC26XX.c:I2S_hwiIntFxn ():d0、d1、d2;i2secho.c:*回声线程():d3
在下面显示的图表中、在这些情况下、I 输出引脚切换器:
D0:发生了 I2S_INT_DMA_OUT
D1:发生 I2S_INT_PTR_ERR
D2:进入 I2S int 例程时为 h (int 函数的第一行上设置了引脚)、退出 int 例程时为 L (int 函数的最后一行上的引脚复位)
D3:调用 I2S_startWrite (i2sHandle)之前的 h、调用之后的 L
D4:位时钟
D5:字时钟
D7:从 MCU 发送到编解码器的测试数据(0xFF、0x00、0xFF、0x00、...)
图1:
在图1中、您可以看到 I2S 启动良好(D3)、流按预期启动(发送数据 D7)。 经过一段随机时间(不确定!)后、流将停止。 很长一段时间内没有中断发生。 发生时(太晚) 、会给出 I2S_INT_PTR_ERR (正确)。
图2:
图2显示了 I2S 流末尾的时序。 时钟和数据正常、但下一个中断由于某种未知原因而丢失。
是否存在任何已知的硬件问题、无论是评估板问题(例如、时钟/I2S 启动/稳定期间/之后的电源压降)、还是可以解释此行为的 CC2650问题? I2secho 演示程序中是否存在任何已知缺陷、可能导致此类行为(例如、在启动 I2S 流之前缺少某些寄存器的复位/初始化)?

