从您的描述来看,问题可能出在I2S配置上。在I2S通信中,bits_per_sample 和 bits_per_chan 是两个不同的概念:
1. bits_per_sample:每个采样点的位数,即每个音频样本的数据宽度。在您的例子中,Mic输出的音频为24位大端数据。
2. bits_per_chan:每个通道的数据宽度。在您的例子中,datasheet要求channel为32位宽。
根据您的描述,逻辑分析仪抓包结果显示每个channel的sck数量始终等于bits_per_sample,而不是bits_per_chan。这可能导致数据传输不完整或错误。
为了解决这个问题,您可以尝试以下步骤:
1. 检查I2S配置:确保您的I2S配置正确地设置了bits_per_sample和bits_per_chan。根据您的描述,bits_per_sample应为24,bits_per_chan应为32。
2. 检查时钟配置:确保SCK频率设置正确。根据您的描述,SCK频率应为WS的64倍。检查您的时钟配置是否满足这个要求。
3. 检查数据对齐:由于Mic输出的是24位大端数据,确保您的I2S配置正确地处理了数据对齐。这可能需要在接收端进行一些额外的处理,以确保数据正确地对齐到32位通道宽度。
4. 检查数据接收逻辑:确保您的数据接收逻辑能够正确地处理bits_per_sample和bits_per_chan。这可能包括在接收到每个采样点后,将其扩展到bits_per_chan的宽度。
5. 使用调试工具:使用逻辑分析仪或其他调试工具,仔细检查I2S通信过程中的数据和时钟信号。这可以帮助您找到问题所在,并确保数据传输正确。
通过以上步骤,您应该能够找到问题所在并解决I2S通信不正常的问题。如果问题仍然存在,请检查硬件连接和Mic本身是否存在问题。
从您的描述来看,问题可能出在I2S配置上。在I2S通信中,bits_per_sample 和 bits_per_chan 是两个不同的概念:
1. bits_per_sample:每个采样点的位数,即每个音频样本的数据宽度。在您的例子中,Mic输出的音频为24位大端数据。
2. bits_per_chan:每个通道的数据宽度。在您的例子中,datasheet要求channel为32位宽。
根据您的描述,逻辑分析仪抓包结果显示每个channel的sck数量始终等于bits_per_sample,而不是bits_per_chan。这可能导致数据传输不完整或错误。
为了解决这个问题,您可以尝试以下步骤:
1. 检查I2S配置:确保您的I2S配置正确地设置了bits_per_sample和bits_per_chan。根据您的描述,bits_per_sample应为24,bits_per_chan应为32。
2. 检查时钟配置:确保SCK频率设置正确。根据您的描述,SCK频率应为WS的64倍。检查您的时钟配置是否满足这个要求。
3. 检查数据对齐:由于Mic输出的是24位大端数据,确保您的I2S配置正确地处理了数据对齐。这可能需要在接收端进行一些额外的处理,以确保数据正确地对齐到32位通道宽度。
4. 检查数据接收逻辑:确保您的数据接收逻辑能够正确地处理bits_per_sample和bits_per_chan。这可能包括在接收到每个采样点后,将其扩展到bits_per_chan的宽度。
5. 使用调试工具:使用逻辑分析仪或其他调试工具,仔细检查I2S通信过程中的数据和时钟信号。这可以帮助您找到问题所在,并确保数据传输正确。
通过以上步骤,您应该能够找到问题所在并解决I2S通信不正常的问题。如果问题仍然存在,请检查硬件连接和Mic本身是否存在问题。
举报