切换到宽版
爱科技/爱创意/爱折腾;电子/数码爱好者的家!欢迎访问新版数码之家网站
  • 6870阅读
  • 27回复

[外设]蓝牙pos机的TC35661蓝牙折腾笔记 [复制链接]

上一主题 下一主题
离线yht7891984
 

发帖
2183
M币
1294
专家
7
粉丝
55
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2016-05-12
建议使用右侧 “  只看楼主  ” 功能查看该帖子
//------------------------------------------------------------------------------------------------------------------

2016.5.15 0:40
用谷歌,在国外的网站上找到了这个http://vps.skybean.eu/repo/skydrop/doc/。资料很全。
还有一个开源的项目,项目地址是这个 http://vps.skybean.eu/repo/

我就不折腾了

PS:这个时间,管理员在搞论坛代码。哈哈。

//------------------------------------------------------------------------------------------------------------------
2016.5.14 11:36
1.断开TC35661和EFM32的所有直接连接引脚。引出TC35661的tx,rx,rst引脚。 这三个引脚位置和BM77的引脚位置相同。
2.tc35661 模块rst引脚上电低电平。需要手动置高。
3.EFM32G222F128 芯片通信超时后,会关闭给tc35661供电的LDO。 需要从EFM32的供电LDO输出跳线到TC35661的电源, 这样TC35661就不会被EFM32关闭供电。
4.给tc35661发送的命令序列不变。看 19楼 表格中BT_RX内容。就可以搜索到“BA80072323”的蓝牙设备。


继续往下折腾。。。


//------------------------------------------------------------------------------------------------------------------
2016.5.13 09:47
论坛下载附件会自动扣MB,所以将文档上传到github上面https://github.com/yuht/TC35661-Bluetooth
增加了通过usb mini logic 抓到的rx ,tx p20,p24,rst, en 引脚数据
可以看工作方式,通信交互更清晰。
撤下代码:“蓝牙命令及响应”这个文档没用了,贴的

撤下代码:通过串口抓的数据没意义了。



//------------------------------------------------------------------------------------------------------------------

目前还没有搞定

1.只是简简单单的看了一下初始化时候时候,和连接/断开蓝牙时候的数据。
2.配对的时候的数据还没有看。

不知道能坚持多久,笔记随时太监。
tc25661 整个通信过程都是115200bps。
因为在初始化之后,用手机蓝牙串口通信软件测试,有数据,(不是透传,带协议)并且协议解包后内容和发送内容相同。
其中一个串口捕获的数据
在2016年5月12日22:38分进行格式化.但是未测试
  1. 代码撤下,关注都在github上

另一个串口捕获的数据
  1. 代码撤下,关注都在github上

下面这个文档意义不大

下面 这个文档,已经在楼下贴上来了。
http://wenku.baidu.com/link?url=SfCx7kdrZ2QUgKLTLIpW1Dy_f7ipVzrGlRPdf-1bJr8bxfqj7coy-guGDPxC9ID-oYfMiRC4m2IljwU2ksIgGVjRVoEik-ipBskgdKI3xei
这个文档有分析通信内容。并且协议格式一样。内容很像哦~











[ 此帖被yht7891984在2016-05-15 00:43重新编辑 ]
本帖最近打赏记录:共13条打赏M币+85专家+1
12
入门级拆客必备!精致便携/数码之家纪念版12合1拆机工具
 
离线yht7891984

发帖
2183
M币
1294
专家
7
粉丝
55
只看该作者 1楼 发表于: 2016-05-12
  1. 蓝牙命令及响应:
  2. /***************************蓝牙命令定义部分****************************/
  3. code unsigned char CmdR[]={0X04,0X01,0X03,0X0C,0X00};
  4. /*  Reset:初始化, 响应: 04 0E 04 01 03 0C 00
  5.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  6.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  7.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  8.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  9.     . Command_Opcode        [2字节]=0x0C03    * OGF=0x03[主控制器与基带命令]    OCF=0x0003
  10. . Status            [1字节]=0x00    * 指令成功
  11. */
  12. code unsigned char CmdRBS[]={0X04,0X01,0X05,0X10,0X00};
  13. /*  Read_Buffer_Size:读缓冲区大小 , 响应: 04 0E 0B 01 05 10 00 C0 00 40 08 00 08 00
  14.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  15.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  16.   : Parameter_Length    [1字节]=0x0B    * 事件参数长度 11个字节
  17.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  18.     . Command_Opcode        [2字节]=0x1005    * OGF=0x04[信息参数]    OCF=0x0005
  19.     . Status            [1字节]=0x00    * 指令成功
  20.     . HCI_ACL_Data_Packet_Length    [2字节]=0x00C0    * 包含在ACL数据分组里的L2CAP段的大小(不包含数据分组头)
  21.     . HCI_SCO_Data_Packet_length    [1字节]=0x40    * SCO数据分组的最大容量(不包含数据分组头)
  22.     . HCI_Total_Num_ACL_Data_Packets    [2字节]=0x0008    * 主控制器数据缓冲区的HCI ACL数据分组总数
  23.     . HCI_Total_Num_SCO_Data_Packets    [2字节]=0x0008    * 主控制器数据缓冲区的HCI SCO数据分组总数
  24. */
  25. code unsigned char CmdCSEF[]={0X05,0X01,0X05,0X0C,0x01,0X00};
  26. /*  Clear:Set_Event_Filter    :指定事件过滤器, 响应: 04 0E 04 01 05 0C 00
  27.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  28.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  29.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  30.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  31.     . Command_Opcode        [2字节]=0x0C05    * OGF=0x03[主控制器与基带命令]    OCF=0x0005
  32.     . Status            [1字节]=0x00    * 指令成功
  33. */
  34. code unsigned char CmdWSE[]={0X05,0X01,0X1A,0X0C,0X01,0X03};
  35. /*   Write_Scan_Enable:写入扫描允许结构参数值 , 响应: 04 0E 04 01 1A 0C 00
  36.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  37.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  38.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  39.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  40.     . Command_Opcode        [2字节]=0x0C1A    * OGF=0x03[主控制器与基带命令]    OCF=0x001A
  41.     . Status            [1字节]=0x00    * 指令成功
  42. */
  43. code unsigned char CmdWAE[]={0X05,0X01,0X20,0X0C,0X01,0X00};
  44. /*   Write_Authentication_Enable:写入鉴权允许参数值, 响应: 04 0E 04 01 20 0C 00
  45.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  46.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  47.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  48.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  49.     . Command_Opcode        [2字节]=0x0C20    * OGF=0x03[主控制器与基带命令]    OCF=0x0020
  50.     . Status            [1字节]=0x00    * 指令成功
  51. */
  52. code unsigned char CmdWVS[]={0X06,0X01,0X26,0X0C,0X02,0X60,0X00};
  53. /*  Write_Voice_Setting:写入话音设置参数值, 响应: 04 0E 04 01 26 0C 00
  54.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  55.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  56.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  57.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  58.     . Command_Opcode        [2字节]=0x0C26    * OGF=0x03[主控制器与基带命令]    OCF=0x0026
  59.     . Status            [1字节]=0x00    * 指令成功
  60. */
  61. code unsigned char CmdSEF[]={0X07,0X01,0X05,0X0C,0X03,0X02,0X00,0X02};
  62. /*  Set_Event_Filter:指定事件过滤器, 响应:  04 0E 04 01 05 0C 00
  63.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  64.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  65.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  66.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  67.     . Command_Opcode        [2字节]=0x0C05    * OGF=0x03[主控制器与基带命令]    OCF=0x0005
  68.     . Status            [1字节]=0x00    * 指令成功
  69. */
  70. code unsigned char CmdWCAT[]={0X06,0X01,0X16,0X0C,0X02,0X00,0X20};
  71. /*  Write_Connection_Accept_Timeout :写入链接识别超时结构参数, 响应:  04 0E 04 01 16 0C 00
  72.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  73.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  74.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  75.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  76.     . Command_Opcode        [2字节]=0x0C16    * OGF=0x03[主控制器与基带命令]    OCF=0x0016
  77.     . Status            [1字节]=0x00    * 指令成功
  78. */
  79. code unsigned char CmdWPT[]={0X06,0X01,0X18,0X0C,0X02,0X00,0X30};
  80. /*  Write_Page_Timeout :写入呼叫响应超时结构参数 , 响应: 04 0E 04 01 18 0C 00
  81. : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  82.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  83.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  84.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  85.     . Command_Opcode        [2字节]=0x0C18    * OGF=0x03[主控制器与基带命令]    OCF=0x0018
  86.     . Status            [1字节]=0x00    * 指令成功
  87. */
  88. //code unsigned char CmdEWPCMS[]={0X05,0X01,0X07,0XFC,0X01,0X03};
  89. /*  */
  90. code unsigned char CmdRBDADDR[]={0X04,0X01,0X09,0X10,0X00};
  91. /*
  92. Read_BD_ADDR    :读本地蓝牙设备地址, 响应: 04 0E 0A 01 09 10 00 9F 23 04 35 1B 00
  93. : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  94.   : Event_Code        [1字节]=0x0E    * 指令完成事件
  95.   : Parameter_Length    [1字节]=0x0A    * 事件参数长度 10个字节
  96.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  97.     . Command_Opcode        [2字节]=0x1009    * OGF=0x04[信息参数]    OCF=0x0009
  98.   . Status            [1字节]=0x00    * 指令成功
  99.   . BD_ADDR            [6字节]=0x001B3504239F    * 本地蓝牙设备地址
  100. */
  101. code unsigned char CmdI[]={0x09,0x01,0x01,0x04,0x05,0x33,0x8b,0x9e,0x06,0x00};
  102. /*  Inquiry    [ 01 01 04 05 33 8B 9E 06 00] [Tx= 9个字节]
  103.     指令名称:查询周边蓝牙设备, 响应1: 04 0F 04 00 01 01 04
  104.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  105.   : Event_Code        [1字节]=0x0F    * 指令状态事件
  106.   : Parameter_Length    [1字节]=0x04    * 事件参数长度 4个字节
  107.     . Status            [1字节]=0x00    * 指令成功
  108.     . Num_HCI_Command_Packets    [1字节]=0x01    * 缓冲区可续存指令分组个数1个
  109.     . Command_Opcode        [2字节]=0x0401    * OGF=0x01[链路控制指令]    OCF=0x0001
  110. 响应2:  04 02 0F 01 01 23 45 67 78 02 01 02 00 08 02 18 02 75
  111.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  112.   : Event_Code        [1字节]=0x02    * 查询结果事件
  113.   : Parameter_Length    [1字节]=0x0F    * 事件参数长度 15个字节
  114.     . Num_Responses            [1字节]=0x01
  115.     . BD_ADDR                [6字节]=0x027867452301    * 搜索到的周边蓝牙设备地址
  116.     . Page_Scan_Repetition_Mode    [1字节]=0x01    * 扫描重复段间隔:R1模式----≤1.28s
  117.     . Page_Scan_Period_Mode        [1字节]=0x02    * 扫描周期:P2模式----≥60s
  118.     . Page_Scan_Mode            [1字节]=0x00    * 扫描模式:强制呼叫扫描
  119.     . Class_of_Device            [3字节]=0x180208    * 设备类型
  120.     . Clock_Offset            [2字节]=0x7502    * 时隙
  121. 响应3: 04 02 0F 01 1D 0F 80 C9 03 00 00 00 00 04 01 12 72 51
  122.   : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  123.   : Event_Code        [1字节]=0x02    * 查询结果事件
  124.   : Parameter_Length    [1字节]=0x0F    * 事件参数长度 15个字节
  125.     . Num_Responses            [1字节]=0x01
  126.     . BD_ADDR                [6字节]=0x0003C9800F1D    * 搜索到的周边蓝牙设备地址
  127.     . Page_Scan_Repetition_Mode    [1字节]=0x00    * 扫描重复段间隔:R0模式----连续
  128.     . Page_Scan_Period_Mode        [1字节]=0x00    * 扫描周期:P0模式----≥20s
  129.     . Page_Scan_Mode            [1字节]=0x00    * 扫描模式:强制呼叫扫描
  130.     . Class_of_Device            [3字节]=0x120104    * 设备类型
  131.     . Clock_Offset            [2字节]=0x5172    * 时隙
  132. 响应4: 04 01 01 00
  133. : HCI_Packet_Type    [1字节]=0x04    * 事件分组类型
  134.   : Event_Code        [1字节]=0x01    * 查询完成事件
  135.   : Parameter_Length    [1字节]=0x01    * 事件参数长度 1个字节
  136.     . Status            [1字节]=0x00    * 指令成功
  137. */
  138. #ifdef FLOWCONTROL
  139. code unsigned char CmdSHCTHFC[]={0X05,0X01,0X31,0X0C,0X01,0x01};
  140. /*  */
  141. code unsigned char CmdHBS[]={0X0B,0X01,0X33,0X0C,0X07,0X00,0X02,0X00,0X02,0X00,0X00,0X00};
  142. /*  */
  143. #endif
  144. #ifdef MASTER
  145. code unsigned char CmdCACLC[18]={0X11,0X01,0X05,0X04,0X0D,0XCE,0X47,0X14,0X37,0X80,0X00,0X08,0X00,0X00,0X00,0X00,0X00,0X00};
  146. /*  */
  147. #endif
  148. /***************************蓝牙事件定义部分****************************/
  149. code unsigned char ECmdR[]={0X07,0X03,0X0c,0X00};
  150. /*  */
  151. code unsigned char ECmdRBS[]={0x0e,0X05,0X10,0X00};
  152. /*  */
  153. code unsigned char ECmdCSEF[]={0x07,0X05,0X0c,0X00};
  154. /*  */
  155. code unsigned char ECmdWSE[]={0X07,0X1a,0X0c,0X00};
  156. /*  */
  157. code unsigned char ECmdWAE[]={0X07,0X20,0X0c,0X00};
  158. /*  */
  159. code unsigned char ECmdWVS[]={0X07,0X26,0X0c,0X00};
  160. /*  */
  161. code unsigned char ECmdSEF[]={0X07,0X05,0X0c,0X00};
  162. /*  */
  163. code unsigned char ECmdWCAT[]={0X07,0X16,0X0c,0X00};
  164. /*  */
  165. code unsigned char ECmdWPT[]={0X07,0X18,0X0c,0X00};
  166. /*  */
  167. //code unsigned char ECmdEWPCMS[]={0X07,0X07,0X0fc,0X00};
  168. /*  */
  169. code unsigned char ECmdRBDADDR[]={0X0d,0X09,0X10,0X00};
  170. /*  */
  171. #ifdef FLOWCONTROL
  172. code unsigned char ECmdSHCTHFC[]={0X07,0X31,0X0C,0X00};
  173. /*  */
  174. code unsigned char ECmdHBS[]={0X07,0X33,0X0C,0X00};
  175. /*  */
  176. #endif
  177. #ifdef MASTER
  178. code unsigned char ECmdCACLC[]={0X0e};
  179. /*  */
  180. #endif


本帖最近打赏记录:共4条打赏M币+12
离线html

发帖
1760
M币
1307
专家
2
粉丝
34
只看该作者 2楼 发表于: 2016-05-12
感觉不错,有搞定的希望。 看起来还有很多高级玩法啊。
还有那个铁壳的的也挺多的
离线yht7891984

发帖
2183
M币
1294
专家
7
粉丝
55
只看该作者 3楼 发表于: 2016-05-12
用手机蓝牙串口发送数据,可以看到数据内容。
但是数据需要从协议中解析出来。

十六进制发送 :0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99
蓝牙tx引脚
  1. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 04 12 00 00 E5 48 0B 00 09 00 11 22 33 44 55 66 77 88 99
间隔一定时间tx引脚
  1. 11 00 00 E1 47 0A 00 00 4D 8D B2 BF 27 28 06 1E 03


十六进制发送 :0x99 0x88
蓝牙tx引脚
  1. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 04 0B 00 00 E5 48 04 00 02 00 99 88
间隔一定时间tx引脚    
  1. 11 00 00 E1 47 0A 00 00 4D 8D B2 BF 27 28 06 1E 03


字符发送 :'9'
蓝牙tx引脚
  1. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 04 0A 00 00 E5 48 03 00 01 00 39
间隔一定时间tx引脚    
  1. 11 00 00 E1 47 0A 00 00 4D 8D B2 BF 27 28 06 1E 03


断开蓝牙连接
  1. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 04
  2. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01
  3. 0F 00 00 E5 44 08 00 00 4D 8D B2 BF 27 28 02

  1. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01
  2. 0F 00 00 E5 44 08 00 00 4D 8D B2 BF 27 28 02
连接蓝牙
  1. 10 00 00 E1 55 09 00 4D 8D B2 BF 27 28 0C 02 5A
  2. 08 00 00 E1 93 01 00 00
  3. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 00
  4. 1A 00 00 E5 43 13 00 00 4D 8D B2 BF 27 28 1F 02 09 47 61 6C 61 78 79 20 53 36
  5. 0C 00 00 E1 7D 05 00 30 03 00 01 00

  1. 10 00 00 E1 55 09 00 4D 8D B2 BF 27 28 0C 02 5A
  2. 08 00 00 E1 93 01 00 00
  3. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 00
  4. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01

  1. 10 00 00 E1 55 09 00 4D 8D B2 BF 27 28 0C 02 5A
  2. 08 00 00 E1 93 01 00 00
  3. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 00
  4. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01

  1. 10 00 00 E1 55 09 00 4D 8D B2 BF 27 28 0C 02 5A
  2. 08 00 00 E1 93 01 00 00
  3. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 00
  4. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01

  1. 10 00 00 E1 55 09 00 4D 8D B2 BF 27 28 0C 02 5A
  2. 08 00 00 E1 93 01 00 00
  3. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 00
  4. 0F 00 00 E1 47 08 00 00 4D 8D B2 BF 27 28 01




[ 此帖被yht7891984在2016-05-14 11:48重新编辑 ]
本帖最近打赏记录:共1条打赏M币+3
离线yht7891984

发帖
2183
M币
1294
专家
7
粉丝
55
只看该作者 4楼 发表于: 2016-05-12
回 html 的帖子
html:感觉不错,有搞定的希望。 看起来还有很多高级玩法啊。
还有那个铁壳的的也挺多的 (2016-05-12 16:41) 回 html 的帖子

铁壳的有网友在ubuntu上挂载成功, 是boardcom 博通的蓝牙模块。
支持串口数据和音频传输。
离线2545889167

发帖
13268
M币
21234
专家
302
粉丝
4790
只看该作者 5楼 发表于: 2016-05-12
優秀文章,看样子楼主是搞定了?
离线html

发帖
1760
M币
1307
专家
2
粉丝
34
只看该作者 6楼 发表于: 2016-05-12
回 yht7891984 的帖子
yht7891984:铁壳的有网友在ubuntu上挂载成功, 是boardcom 博通的蓝牙模块。
支持串口数据和音频传输。 (2016-05-12 16:47) 回 yht7891984 的帖子

那个有比较详细的资料么
离线yht7891984

发帖
2183
M币
1294
专家
7
粉丝
55
只看该作者 7楼 发表于: 2016-05-12
回 html 的帖子
html:那个有比较详细的资料么 (2016-05-12 16:51) 回 html 的帖子

没有,从分析数据入手吧。 既然找不到资料, 只能这样。
现在在初始化结束之后,可以做通信。
不过需要进行协议解包。
不是绝对“透传”
离线html

发帖
1760
M币
1307
专家
2
粉丝
34
只看该作者 8楼 发表于: 2016-05-12
回 yht7891984 的帖子
yht7891984:没有,从分析数据入手吧。 既然找不到资料, 只能这样。
现在在初始化结束之后,可以做通信。
不过需要进行协议解包。
不是绝对“透传” (2016-05-12 16:59) 回 yht7891984 的帖子

解包也没啥,只要能用能配对就好
离线benli

发帖
33704
M币
6633
专家
91
粉丝
484
只看该作者 9楼 发表于: 2016-05-12
html:那个有比较详细的资料么 (2016-05-12 16:51) 

资料肯定有,只不过面向公司而是需要签订协议

内容来自Android手机客户端

快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个