Info

The hedgehog was engaged in a fight with

Read More
乐鱼体育官网登录

_基于realtek“RTL 8753 bfr汽车蓝牙条”的音频连接器设计

一、前言

随着蓝牙技术的普及,越来越多的旧设备没有蓝牙功能,无法及时使用最近越来越方便的蓝牙共享功能,因此以当前流行的“无线蓝牙棒”方式访问蓝牙是一个不错的解决方案。我们开发的蓝牙棒是为没有蓝牙功能的计算机或车辆设备提供功能的设备。打开电源,连接到汽车或计算机,然后打开移动蓝牙设备搜索。详细的使用方法如下:

首先要将USB端插入手机充电器的USB插孔,其他3.5插头插入音频输入端,如果输入端是莲花插座,则要找到3.5莲花插头音频线路连接,打开音响,按照以下步骤操作。

1.先打开音响,然后打开手机。

2、在手机设置中打开蓝牙功能。

3.这时手机会自动搜索周边蓝牙设备。

4.如果找不到蓝牙音频设备,请继续单击搜索。检测到蓝牙转换器后,手机将自动连接,并显示配对成功。

5.配对成功后,音响发出“咕噜”的声音,意味着配对成功。

6.这时可以用手机播放存储的音乐,可以在网络上播放音乐,还可以调整蓝牙音频音量大小。

为了实现这些功能,戴尔采用了多年来业界领先的Realtek半导体的蓝牙技术,以强大的音频计算处理和高保真音频效果使很多用户感到痛惜。使用新芯片设计蓝牙棒可以说是非常合适的选择。不仅可以简单快速地开发,成本功耗也可以非常好地满足快速增长的市长/市场需求。电源设计

RTL8753BFE RWS芯片内置两种电源输入、锂电池(VBAT:2.8-4.5V)、主要为锂电池充电的电源适配器(4.5V-6.5V)、高达400毫安的充电电流、芯片内置充电保护和外部环境保护检测功能。

b)重置电路

为了保证电路的稳定性和可靠性,RTL8753BFE RWS芯片可以通过外部复位开关复位HW_RST_N发,一般来说,为了节省成本和空间,只有外部充电复位才能完成系统的正常复位(低电平有效地保持低脉冲5毫秒即可)。

c)时钟电路

RTL8753BFE RWS芯片具有双向时钟源。一种是正常工作时钟源,其主时钟源为ARM/BT基带,不需要外部负载电容器。MP需要校准为7~9pf。另一个是RTC时钟源32.768k,通常在休眠模式下工作。

d)音频电路

音频输入和输出电路设计,音频输入支持三种访问模式(单端模式、Capless模式和Differential模式),根据拾音(AUX-IN、1-MIC)的不同,有四种访问方法在这里,为了与大多数产品应用程序兼容,必须普及音频接口。到2009年为止,不同的设备需要使用不同的耳机是不方便的。2009年9月1日,国内统一标准规定耳机插头2.5毫米和3.5毫米两种耳机插头为国内标准插头。目前国内使用的基本都是3.5毫米耳机插头。普通耳机都可以通用。另外,耳机插头在3段和4段、I耳机插头国内统一标准后,耳机的使用已经非常简单,另外,很多转换设备正在扩大耳机的使用范围。比如1转2共享等、电脑连接、智能钥匙等,目前常见的耳机接口都是3.5毫米音频接口,分为3-pole和4-pole。4-pole这是美国人的名字。在国内,OMTP通常被称为国家标准,Standard被称为CTIA或美国标准。一般来说,标准型号耳机插头上的塑料环是白色的,OMTP型号插头上的塑料环是黑色的。请参见下图。

4

其中3-pole的接口顾名思义,插头只有3个触点,从末端到根,连接到左通道、右通道和电源地,因此该连接器的耳机不支持麦克风。4-pole接口支持麦克风,但如上图所示,Standard型号和OMTP型号插头具有与电源触点相反的麦克风触点。所以我们把OMTP插头耳机插入Standard接口时,声音听起来不太好,但按耳机上的通话按钮时很好,但是现在有些电子设备在设计时可以在电路上添加耳机类型检测芯片(如ts3a227e),自动检测耳机连接器类型。在这种设备上,这三种耳机都可以正常使用。

D) RF电路设计

RTL8753BFE支持IQM和TPM。

–RFIO _ IQM支持双模、最大功率10dBm、接收灵敏度-94dBm @2M EDR

–RFIO _ TPM仅适用于BLE最大功率4dBm

e)天线设计

支持Pifa天线、chip天线和顶针天线。具体天线设计可以参考Realtek工厂参考设计和推荐供应商(慢性、火神等)。

f)周边设备针脚设计

–GPIO(最多可配置32 GPIOs)

—Timer可配置的PWM function

-I2C支持主/从模式

–SPI支持主/从模式

–UART(高速串行端口最大速度4米)

—GDMA最多可配置8个通道,并支持Single multi访问技术

-ADC (8通道/12位ADC)

–KeySCAN(最高12×20的最大矩阵)

-Q-decoder支持

—IR接收支持

-支持SD host兼容的SD 2.0

-支持大容量USB传输

2、软件设计。

RTL8753BFE RWS芯片软件设计,一站式“傻瓜”设计技术,让每位客户都能轻松构建自己的RWS无线耳机系统。主要软件设计包括:

A)MCU配置

MCU配置工具主要通过配置工具进行系统控制。SCF和。可以生成APF文件。在这里。SCF文件是系统配置文件。APF文件是音频应用程序参数设置文件,主要目的是为每个客户设计创建定制配置文件并定制所有源代码。所有这些工作都是通过APP UI工具完成的,客户可以通过专门授权的帐户下载这些工具。

B)DSP配置

DSP配置工具主要针对音频配置,主要包括:

-声音处理:1-mic/2-mic NR(降噪)、AEC(消除声音回声)/AES(抑制声音回声)、MB-AGC(多波段自动增益控制)、痛苦和过滤器(痛苦和过滤器)

-音频的A2DP/输出处理:支持音频处理功能、MB-AGC、音频扩展、参数EQ、发送者EQ配置、音频传递函数、模式配置、允许开发人员按所需顺序排列声音效果。

-无线DSP控制:蓝牙链路配置

-周边硬件控制:主要定义I2S接口、模拟解码接口等。

——配置SDK开发接口:可根据客户要求自定义为语音和音频接口

三、测试

3.1射频测试

使用安立MT MT8852B进行RF性能参数测试。有关具体的测试任务,请参阅装置文档。

5

3.2线路自动化测试项目

包括所有MT8852B测试项目,并包括以下附加测试项目:

所有MT8852B RF测试项目

蓝牙软件版本测试

测试设备名称

自动确定PASS/FAIL,测试速度提高30%

8

3.3功能测试

a)电源测试

b)声学测试

3.4成品简单蓝牙测试程序(注:程序在网络上提供)

由于项目要求,笔者设计了在Android平台上开发的程序,可以与蓝牙和底层单片机通信。

背景知识

1.什么是蓝牙?

这是一种近距离无线通信协议,低功耗蓝牙设备(通常是我们看到的)的通信速度约为1Mbps,通信距离为10米。

蓝牙子主从?

分支,蓝牙联网方法为1周(8)。蓝牙集团的网络有可爱的名称——“piconet”,蓝牙设备有3位微网络的地址(不是MAC地址),因此微网络最多有8台活动设备。设备的主从角色分配是在配置微网络时临时决定的,但蓝牙技术支持“主从转换”。

蓝牙设备是什么状态?

激活、呼吸、维持、休眠:电力依次减少。

模板

首先,我们来看看一般的通信模式是怎么样的。

打开-“建立连接-”通信-“断开连接-”关闭

打开设备是所有工作的前提。要建立连接,必须确保两个蓝牙设备之间的可见性。搜索是找到周围的蓝牙设备(带宽比较,通信时必须关闭)。通信是以某种方式(1 master 1)连接两个设备,然后发送消息和接收消息。最后,必须断开连接并关闭设备。

因此,设计UI如下(“接收消息”按钮仅用于美观,不在代码中实现):

6

这个程序只使用一个活动。

//OnClickListener接口的实现在活动中设置控件的接收时直接传递this即可,代码更加简洁

7

更重要的是三个内部类。

//这三个都是线程类,与蓝牙相关的所有可阻止任务都已封装。

8

代码

代码不是很完美,但可以充分获得测试功能

最好复制代码,用IDE工具查看,先看帧(outline),再看细节。

//看代码有迷惑的地方,再看前面的类图,在树林里迷路了,这时要爬到高处

//所有输出都打印在logcat上,并过滤为System.out

//注意:使用蓝牙需要声明蓝牙权限,如果需要扫描设备或操作蓝牙设置,还需要蓝牙_ADMIN权限

Mainactivity.java

Activity _ main.xml

测试

1.取出两台设备,安装程序,完成配对//配对的过程需要人为操作,与此程序无关

2.两个设备都打开蓝牙(可在系统界面或此程序的“打开蓝牙按钮”中找到)

3.如果设备通过ADB连接到计算机,请单击“启动主机”按钮

4.单击其他设备上的“启动从属”按钮

5.单击此设备上的“发送消息”按钮

6.意外地,logcat的System.out将打印3条记录——1、2和3

MainActivity.java

package com . example . test blue tooth;

import Java . io . io exception;

import Java . io . input stream;

import Java . io . output stream;

import Java . util . set;

import Java . util . uuid;

import Android . OS . bundle;

import Android . OS . handler;

import Android . OS . message;

import Android . app . activity;

import Android . widget . button;

importandroid . bluetooth . bluetoothadapter;

importandroid . bluetooth . bluetoothdevice;

importandroid . bluetooth . bluetooth服务器插槽;

importandroid . bluetooth . bluetooth插槽;

importandroid . content . broadcastreceiver;

import Android . content . context;

import Android . content . intent;

importandroid . content . intent filter;

import Android . view . view;

importandroid . view . view . onclick listener;

import Android . widget . toast;

public class main activity extends activity implements onclick listener {

//蓝牙

bluetoothadapter mbluetoothadapter=bluetoothadapter . getdefaultadapter();

setpaireddevices=mbluetoothadapter . getbondeddevices();

//蓝牙状态

final broadcast receiver mbroadcastreceiver=new broadcast receiver(){//接收蓝牙搜索消息

@Override

public void on receive(context context,intent intent) {

string action=intent . getaction();

if(bluetoothdevice . action _ found . equals(action)){

bluetoothdevice device=intent . getparcelableextra(bluetoothdevice . extra _ device);

system . out . print ln(‘ from mbroadcastreceiver:’ device . get name()’-‘ device . get address())

}

}

}

//消息处理

private static final int message _ read=0;

private handler mhandler=new handler(){

public void handle message(messagemsg){

开关(msg.what) {

Case MESSAGE_READ:

byte[]buffer=(byte[])msg . obj;//buffer的大小与里面的数据量无关。

for(int I=0;Ibuffer.lengthI ){

If(buffer[i]!=0){

system . out . print ln(buffer[I]);

}

}

布雷克;

}

}

}

//线程

已连接线程mconnectedthread

@Override

Protected void oncreate(捆绑包savedinstancestate) {

super . on create(savedinstancestate);

setcontentview(r . layout . activity _ main);

//控件

Findviewbyid (r.id.open)。setonclicklistener(this);

Findviewbyid (r.id.close)。setonclicklistener(this);

Findviewbyid (r.id.search)。setonclicklistener(this);

Findviewbyid (r.id.server)。setonclicklistener(this);

Findviewbyid (r.id.client)。setonclicklistener(this);

Findviewbyid (r.id.send)。setonclicklistener(this);

Findviewbyid (r.id.receive)。setonclicklistener(this);

Findviewbyid (r.id.paired)。setonclicklistener(this);

//广播注册

intent filter filter=new intent filter(bluetoothdevice . action _ found);

register receiver(mbroadcastreceiver、filter);//don ‘ t forget to unregister during on destroy

}

//a fictional method in the application

//that will initiate the thread for transferring data

Void manageconnectedsocket(蓝牙套接字){//不知何故,如果在此处使用toast,将出现Looper问题//toast.maketext (this,Toast)LENGTH_SHORT)。show();

//system . out . print ln(‘ from manageconnectedsocket:’ socket);

mconnected thread=new connected thread(插座);

mconnectedthread . start();

}

@Override

Public void onClick(View v) {

//TODO Auto-generated method stub

//设备支持不支持蓝牙与是否插入蓝牙芯片无关。这是操作系统的问题

//如果系统不支持蓝牙,将返回null,并且经过测试,即使没有蓝牙芯片,蓝牙值也可能不为null

//但是,如果不插入蓝牙芯片,系统将被阻塞

开关(v . getid(){

Case R.id.open:

If(!mbluetoothadapter . isenabled()){//bluetoothadapter未打开

mbluetoothadapter . enable();//此方法允许跳过打开蓝牙的系统界面

}

布雷克;

Case R.id.close:

如果if(mbluetoothadapter . isenabled()){//bluetooth已打开

mbluetoothadapter . disable();

}

布雷克;

Case R.id.search:

If(!mbluetoothadapter . is discovering()){//如果bluetoothadapter未处于搜索状态(例如,查找附近的蓝牙)

mbluetoothadapter . start discovery();//enabling discover ability will automatically enable bluetooth .

}

布雷克;

Case R.id.server:

New AcceptThread()。START();

((button)findviewbyid(r . id . client))。set visibility(view . invisible);

布雷克;

Case R.id.client:

For(蓝牙设备:paired devices) {

New ConnectThread(device)。START();

((button)findviewbyid(r . id . server)。set visibility(view . invisible);

}

布雷克;

Case R.id.send:

If(mConnectedThread!=空){

Byte[] bytes=new byte[]{1,2,3 };

mconnectedthread . write(bytes);

}

布雷克;

Case R.id.receive:

布雷克;

Case R.id.paired:

paired devices=mbluetoothadapter . getbondeddevices();

For(蓝牙设备:paired devices) {

system . out . print ln(‘ from paired:’ device . get name());

}

布雷克;

Default:

布雷克;

}

}

private class accept thread extends thread {

private final bluetooth server socket mm server socket:

Public AcceptThread() {

//use a temporary object that is la ter assigned to mm server socket,

//because mmServerSocket is final

蓝牙服务器套接字tmp=空;

Try {

//my _ uuid is the app’s uuid string,also used by the client code

tmp=mbluetoothadapter . listenusingrfcommwithservicerecord(‘ blind _ nav ‘,uuid.fromstring (‘0c3122)

} catch (IOException e) {}

MmServerSocket=tmp

}

Public void run() {

蓝牙插座插座=空;

//keep listening until exception occurs or a socket is returned

While(真){

Try {

//system . out . print ln(‘ from accept thread:’);

socket=mmserversocket . accept();

} catch (IOException e) {

布雷克;

}

//If a connection was accepted

If(插座!=空){

//do work to manage the connection(in a separate thread)

Manageconnectedsocket(套接字);

Try {

mmserversocket . close();

} catch (IOException e) {

//TODO Auto-generated catch block

e . printstacktrace();

}

布雷克;

}

}

}

/* * will cancel the listening socket,and cause the thread to finish */

Public void cancel() {

Try {

mmserversocket . close();

} catch (IOException e) {}

}

}

private class connect thread extends thread {

Private final bluetooth socket mm插槽:

private final bluetooth device mm device:

Public connect thread(蓝牙设备设备){

//use a temporary object that is la ter assigned to mm socket,

//because mmSocket is final

蓝牙套接字tmp=空;

MmDevice=device

//get a蓝牙socket to connect with the given蓝牙设备

Try {

//my _ uuid is the app’s uuid string,also used by the server code

tmp=device . createrfcommsockettoservicerecord(uuid . from string(‘ 0c 312388-5d 09-4f 44-b 670-544)

} catch (IOException e) {}

MmSocket=tmp

}

Public void run() {

//cancel discovery because it will slow down the connection

mbluetoothadapter . cancel discovery();

Try {

//connect the device through the socket . this will block

//until it succeeds或throws an exception

mmsocket . connect();//这项工作需要几秒钟,并不是立即就能见效的

} io exception connect exception(catch){

//Unable to connect;Close the socket and get out

Try {

mmsocket . close();

} catch(io exception close exception){ }

Return

}

//do work to manage the connection(in a separate thread)

ManageConnectedSocket(mmSocket);

}

/* * will cancel an in-progress connection,cleanup all internal resources,and close the socket */

Public void cancel() {

Try {

mmsocket . close();

} catch (IOException e) {}

}

}

private class connected thread extends thread {

Private final bluetooth socket mm插槽:

private final inputstream mm instream;

private final output stream mm outstream;

Public connected thread(蓝牙插座){

Mm插座=插座;

InputStream tmpIn=null

OutputStream tmpOut=null

//get the input and output streams,using temp objects because

//member streams are final

Try {

TmpIn=socket . getinputstream();

TM pout=socket . getoutputstream();

} catch (IOException e) {}

MmInStream=tmpIn

MmOutStream=tmpOut

}

Public void run() {

byte[]buffer=new byte[1024];//buffer store for the stream

Int bytes//bytes returned from read()

//keep listening to the inputstream until an exception occurs

While(真){

Try {

//Read from the InputStream

bytes=mm instream . read(buffer);

//send the obtained bytes to the ui activity

//Message msg=new Message();

//msg . what=MESSAGE _ READ;

mhandler . obtain message(message _ read、bytes、-1、buffer)

.sendToTarget();

} catch (IOException e) {

布雷克;

}

}

}

/* call this from the main activity to send data to the remote device */

Public void write(byte[] bytes) {

Try {

mmoutstream . write(bytes);

} catch (IOException e) {}

}

/* call this from the main activity to shut down the connection */

Public void cancel() {

Try {

mmsocket . close();

} catch (IOException e) {}

}

}

}

Activity_main.xml

应用场景图形

sceneryUrl

产品实体图表

imgUrl

展示版照片

frontUrl

backUrl

方案方块图

funcUrl

核心技术优势

西欧RTL8753BFE主芯片不仅支持蓝牙5.1、双耳通话,还支持HFP1.7、HSP1.2、A2DP1.3、AVRCP1.6、SPP1.2、PBAP1.0等多种耳机模式。

1.双模Bt 5.1

2.卓越的RF性能:10 DBM (typ)传输功率和接收能力至:

-94.0 dBm (typ) 2M EDR:

-97.0 dBm (typ) BLE:

-106.5 dBm (typ) 125K BLE

3.OTA更新固件支持

4.支持开放式SDK平台,让用户开发特色产品。

超低功耗、音乐播放电流LT;8mA

方案规格

1.支持双麦克风降噪(可选)

2.光传感器开关支持

支持自动充电开关

4.可配置的EQ支持

_基于realtek“RTL 8753 bfr汽车蓝牙条”的音频连接器设计

Author Image
yabovip

发表回复

您的电子邮箱地址不会被公开。