![](https://img-blog.csdnimg.cn/20190219184426281.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CSR867x
文章平均质量分 84
专栏是笔者使用CSR867x蓝牙芯片开发产品的学习总结。
由浅入深的讲解了CSR平台的xIDE和ADK的使用,分享了在开发过程中遇到的问题和经验,同时也会对蓝牙协议进行简单的介绍和剖析。
文化人Sugar
也许我们都不是天才的程序员,但至少我们都可以成为一个理想的程序员。
展开
-
CSR867x — 从“吃一堑”中说说我对老外做事的看法
写在前面:笔者负责一个TWS音箱(CSR8670)的项目,需要通过BLE连接IOS版的APP。在项目开发过程中,经历了你来我往,各种需求的添加,各种问题的解决~总算一步步走过来了,包括与项目的IOS版APP(国内开发)的调试对接也都非常顺畅。在项目接近尾声的时候,客户想把软件用到另外一个项目(称为项目B)中,于是直接对接了项目B的IOS版APP(老外开发),发现连接不了~咯咯了。项目B的IOS版APP(老外开发)是跟旧版软件对接的,连接和通信都没有问题,于是笔者就拿到旧版软件,对比新旧软件的差异。结原创 2019-04-23 09:07:07 · 1238 阅读 · 0 评论 -
CSR867x — 如何修改BLE的蓝牙地址
姐妹篇:CSR867x — 如何修改BLE蓝牙设备名称最近遇到这样一个需求,根据经典蓝牙的地址修改某些字段来设置BLE的蓝牙地址,比如下图这样:实现需求本来以为是很简单的需求,就卡卡一通改:1、 首先获取经典蓝牙的地址;2、 然后修改第一个字节;3、 再通过接口设置回Controller;结果无论怎么设置地址类型和修改接口的传参,BLE的地址总是跟经典蓝牙的地址一样,无法实现上述...原创 2020-04-28 10:14:44 · 1409 阅读 · 0 评论 -
CSR867x — sink工程的编译与下载(run)
写在前面:安装了ADK之后,怎么把代码download到芯片里呢??下面就一步一步的说说吧。1、打开当前目录下的IDE: xide->bin->xide.exe2、从Project菜单下打开工程文件,工程文件在ADK的安装目录下,后缀名为xiw,不要弄错了。 apps->sink->speaker.xiw3、需要 merge一些psr文件到板子上,就是写一些配置信息;原创 2018-02-01 16:59:35 · 1715 阅读 · 1 评论 -
CSR867x — 使用Sink Configuration Tool配置按键
写在前面:最近新接触一款CSR的soc芯片,就是CSR8670/8675音频系列芯片;这是第一篇,以后会陆续更新;本文重点讲解如何使用 Sink Configuration Tool 配置按键~1、首先阅读官方文档《ADK Configuration Tool User Guide》,先对工具有个基本的了解;2、打开工具,确保SPI连接正常后,找到标题“User Events”,如下图;原创 2018-01-17 11:37:42 · 4703 阅读 · 5 评论 -
CSR867x — 使用Sink Configruation Tool配置I2S输出
原文链接:转自码农兰博万(转载文章,若有不妥,通知后我会立即删除)I2S总线规范在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有 1个脉冲。SCLK的频率=2×采样频率×采样位数。2. 帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRC...转载 2018-02-02 09:37:15 · 2656 阅读 · 1 评论 -
CSR867x — 如何看懂一份psr文件
写在前面:初接触CSR平台,可能对psr文件会非常陌生,不怕~看完这篇文章你就能搞定她^_^1、拿到一份psr文件,打开之后:原创 2018-04-14 13:37:58 · 3303 阅读 · 0 评论 -
CSR867x — 如何添加自定义AT Command
写在前面:看代码时看到有关AT指令的部分,就想添加一条自定义的,但是看了半天没弄明白,网上也没查到有用的资料;一、先摸索: 1、打开sink_parse.parse文件,可以看到目前工程中添加了16条AT指令;原创 2018-03-14 19:27:17 · 1951 阅读 · 5 评论 -
CSR867x — 说说蓝牙音频常用的编解码格式
写在前面:最近接触了几种蓝牙音频编码格式,以下是搜集到的资料,笔者做了下整理; SBC (Sub-band coding,子带编码)最早的格式应该是SBC,SBC是A2DP(Advanced Audio DistribuTIon Profile,蓝牙音频传输协议)协议强制规定的编码格式。所有的蓝牙都会支持这个协议,所以所有的蓝牙音频芯片也会支持这个协议。SBC编码在传输时的码率具体参数未找到,根据sony官网宣传给出的资料,是:328Kbps,44.1KHZ。这个码率其实和高品质的MP3原创 2018-02-02 10:03:35 · 12460 阅读 · 6 评论 -
CSR867x — CSR蓝牙开发调试经验
原文链接:http://blog.csdn.net/bona020/article/details/11518399(转载文章,若有不妥,通知后我会立即删除)1.FLASH版本(BC5MM 8670等)使用blueflash烧录程序。2.ROM版本(57F 6145 8610等),EEPROM使用e2bluecmd烧录程序,FLASH使用NVSCMD烧录程序。3.bluet...转载 2018-02-01 16:21:46 · 6150 阅读 · 0 评论 -
CSR867x — CSR8670平台开发调试经验
当打开Debug进行调试程序时(可以在print channel0输出log),断开ADK的run,重新上电板子是跑不起来的;因为打开log信息后,板子只能进行在线调试,只有去掉了所有的打印信息输出板子才可以离线运行。3、程序进入调试模式后,Debug窗口显示“The VM cannot run, as it is already running”,崩溃了重新run一次。4、目前发现CSR8670不支持组合按键,当一个按键被按下后,其他按键是不响应的,如果出现多个按键没响应的情况,应该考虑是不是原创 2018-06-19 18:41:45 · 8501 阅读 · 15 评论 -
CSR867x — 说说什么是ANC、CVC、DSP降噪
原文链接:http://www.ny-jetblue.com/xinwen22(转载文章,如有不妥,通知后我会立即删除)1、CVC和DSP降噪:消费者在选购蓝牙耳机时,总会听到商家在宣传耳机所具备的CVC、DSP降噪功能,不管听过N多商家这样的描述,可不少消费者依然不是很明白这两者之间的区别,针对这样的一个技术问题,我们今天来科普下这两者的工作原理及区别。 DSP是英...转载 2018-04-26 10:15:12 · 13546 阅读 · 0 评论 -
CSR867x — 如何添加一个GATT Server
参考链接:https://blog.csdn.net/wzz4420381/article/details/783594811、tools\include\profiles\BlueLab-7.0.3-Release路径下,编写.dbi和.h2、.h文件原创 2018-10-17 21:10:44 · 1541 阅读 · 6 评论 -
CSR867x — uart串口调试和AT指令
写在前面:在新接触CSR平台时,如何查看调试信息?如何实现串口通信,通过串口打印log?如何添加AT指令?看看下文就知道了。1、Print Channel 0: 1)属性配置Raw,Define Symbols添加宏; 或属性配置Raw,sink_debug.h中去掉宏后面的‘x’;2)编译库,修改makefile,Debug模式下能正常打印,可参考这篇博客。原创 2018-04-26 10:09:49 · 5894 阅读 · 2 评论 -
CSR867x — 实现SPP数据收发
写在前面:CSR8670是双模的SOC芯片,客户的需求需要GATT和SPP同时支持,我现在使用的环境是ADK4.0.1,里面已经没有实现SPP的通信了,所以要自己实现;其实在ADK1.1里有实现SPP通信代码的,可能是SPP需求很少,所以后续就没有保留了,有兴趣可以点击链接下载。1、在网上找到了一份SPP的通信代码,主要是基于spps_shim.c的API,感谢作者,下载链接:点击这里或者这里2、添加到自己的工程中,可以通过以下接口收发数据:原创 2018-04-14 13:38:41 · 3192 阅读 · 0 评论 -
CSR867x — TWS模式音量调节的交互流程
写在前面:最近看了有关TWS的部分,梳理了tws模式下peerdevice设备之间的音量调节过程,想要发送数据,可以类比封装数据的接口;1、与设备音量有关的UE事件有这样四个: EventUsrMasterDeviceTrimVolumeUp //音量的UE事件 EventUsrMasterDeviceTrimVolumeDown EventUsrSlaveDeviceTrimVolumeUp EventUsrSlaveDevice原创 2018-02-08 16:00:22 · 2339 阅读 · 0 评论 -
CSR867x — TWS模式的应用笔记【转载】
文章出处:RyomaWang(转载文章,已通过作者授权)1. 应用场景1.1 非TWS会话单个音箱最多可以连两个A2DP源。当音箱A同时与两个A2DP源建立了连接,另一个音箱B不能与其建立TWS会话 同一时间一个音箱只能选择2个A2DP源中的一个来播放1.2 TWS会话1.2.1 准备工作单个音箱最多可以连接1个A2DP源,1组TWS会话最多连接2个A2DP源。...转载 2018-01-23 20:32:59 · 3263 阅读 · 0 评论 -
CSR867x — 获取电池电压值和电压level的接口
写在前面:CSR8670的sink工程中,有关电池电压有哪些接口?1、获取当前电压值,在sink_powermanager.c,如图:...原创 2018-02-01 16:39:57 · 1277 阅读 · 0 评论 -
CSR867x — 广播数据设置接口以及如何添加厂商数据
写在前面:CSR8670广播时是怎么填充广播数据呢?又是如何实现添加自定义厂商数据呢?经过与别的协议栈对比,在工程中找到了相应的接口;一、广播数据设置接口: sink_ble_gap.c文件中 sinkBleGapReadLocalNameComplete(); sink_ble_advertising.c文件中 bleSetupAdvertisingData();原创 2018-03-10 10:14:08 · 1105 阅读 · 0 评论 -
CSR867x — Speaker Equalizer曲线调试笔记
一般曲线如下图:低频增强,3K~4K是人声(增强),高频是乐器的声音要衰减,不然会很刺耳原创 2018-08-26 15:21:33 · 1611 阅读 · 0 评论 -
CSR867x — 开机是进入可发现可连接还是RSSI配对
写在前面:sink工程的原生代码里,设备开机进入的工作模式,是根据psr的配置和配对列表中设备个数共同决定的。获取配对列表设备个数:ConnectionTrustedDeviceListSize(),最多8个,如图原创 2018-04-14 15:53:26 · 1403 阅读 · 2 评论 -
CSR867x — Headset项目评估总结
写在前面:最近新接项目CSR平台降噪耳机,前期需要进行项目评估。1、充电插入/拔出检测: VBUS脚接USB,软件使用Sink Configuration Tool在CHG配置事件,如下图;原创 2018-04-26 10:06:13 · 970 阅读 · 0 评论 -
CSR867x — Sink中A2DP连接时多次Play不Play的问题
正在做的项目中有音乐模式和通话模式;场景一:使用App,发送指令进行“音乐模式—>通话模式—>音乐模式”切换,在切换模式的处理接口custom_switch_mode()中对音乐模式处理时会发送UE事件(EventUsrAvrcpPlay)调用sinkAvrcpPlay()接口去播放音乐,这时能够正常播放音乐;原创 2018-04-03 15:45:35 · 804 阅读 · 0 评论 -
CSR867x — 如何实现两种指示状态共存的效果
写在前面:玩过CSR平台的都知道,ConfigurationTool里可以针对不同的状态和事件配置不同的LED指示,非常方便,但是代码里同时只支持一种状态,如果客户有两种同时指示的需求,怎么做呢?且听我慢慢道来~通过对CSR8670的ADK学习,有以下发现:1、处在某种状态时,可以触发事件的指示,事件指示结束后会继续状态,此时会刷新状态,出现短暂显示异常,如下图;(这种情况可以实现短暂的两种指示状态共存的效果,但可能还是满足不了客户的需求)原创 2018-10-17 12:49:46 · 760 阅读 · 2 评论 -
CSR867x — IOS设备搜索到的BLE外设名称与实际名称不相符的问题分析
写在前面:在开发蓝牙音箱时,遇到一个问题,修改BLE的设备名称匹配用户的APP(指定蓝牙名称连接),但是BLE设备名称改变之后不会立即变化,要连接一次才会变化。参考博文1参考博文2问题描述:修改BLE的设备名称,复位后发现IOS设备搜索到的还是之前的名称,优化了代码后还是存在问题,用一部安卓手机和一部IOS手机同时搜索,安卓手机搜索到的设备名称确实是修改之后的,说明广播数据是没问题的,推测应该是IOS手机的缓存问题。原创 2019-01-16 10:06:55 · 3263 阅读 · 0 评论 -
CSR867x — 如何修改蓝牙设备名称
写在前面:最近有很多人问到,CSR的ADK中如何修改蓝牙设备名称,这里我针对平时的操作做个简单总结;问:把大象放冰箱需要几步?答:3步。对的,我们这里修改蓝牙设备名称,也是需要3步:1、调用lib库中connection接口,通过HCI指令修改底层协议栈的蓝牙名称:ConnectionChangeLocalName(nameLength, nameData);2、使用PSkey存储该设备名称,下次开机只需从PSkey读取即可:memcpy(at_buff, nameData, nam原创 2019-03-02 16:49:01 · 5194 阅读 · 0 评论 -
CSR867x — 蓝牙音频发射器方案(支持USB、模拟和SPDIF)
写在前面:使用BC5和CSR8670的芯片,分别实现蓝牙音频发射器方案;1、选择ADK的source工程编译下载,然后参考对应的source用户手册(BC57E687C和CSR8670);2、注意USB模式时,硬件上要把BC5:VDD_USB CSR8670:VBUS_CHG_5V脚接高;3、通过用户手册可以看到BC5支持USB和analogue两种模式,而CSR8670支持USB,analogue和SPDIF(TOSLINK光纤)三种工作模式,如下:原创 2018-12-19 17:42:24 · 5190 阅读 · 0 评论 -
CSR867x — Source支持一拖二时codec配置的优化
写在前面:CSR的平台做Source,可以支持一拖二的场景;但在一拖二时两个从机必须配置为相同的codec,且只能为SBC, FASTSTREAM和 APTX其中一种。局限于平台的资源,一拖二时两个从机的声音会有不一致,一快一慢。1、参考文档,第5章节有关dual stream的部分;2、Source端会根据自身支持的codec,针对每一个从机协商出对应的codec类型,当两个从机协商的codec不一致时,就需要reconfig;原生代码中,重新配置时还是无法达到从机codec一致的结果,所以就会出原创 2019-01-16 10:05:36 · 2126 阅读 · 18 评论