打印
[i.MX]

i.MX6Q 开发Bluetooth问题

[复制链接]
2065|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Surpass_sun|  楼主 | 2015-6-19 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近期公司购入了飞思卡尔的i.MAX6 Quad版,在搭建平台时遇到了以下问题:

              在开发Bluetooth项目调试UART通信时遇到了一些问题,通过芯片文档查到蓝牙通信使用的是uart2,对应/dev/ttymxc1
              飞思卡尔官方手册【i.MX_6Dual6Quad_Linux_Reference_Manual.pdf】Chapter 41.2.1记载:
              “UART2 is used for communication between the CPU chip and the Bluetooth chip. The BCHS protocol opens /dev/ttymxc1 and configures the device according to profile requirements.”

              所以选择了ttymxc1,但是不好用,也试了ttymxc2,但同样不好用,通过现在的现象来看是CPU主板的UART是好用的,但是基板的UART不好用(Bluetooth要使用的UART是在基板上的)
              通过[ echo -e "test" > /dev/ttymxc1 ], [cat /proc/tty/driver/IMX-uart]和示波器等测试,Tx,Rx并没有数据输出,

              请问具体还需要如何设置才能让uart2通信好用?还是说SD卡中带的默认系统内核的ttymxc1驱动不好用?或是配置不对?

              还是CPU主板需要安装基板的什么驱动,才能使用基板上的UART?

相关帖子

沙发
Surpass_sun|  楼主 | 2015-6-19 16:40 | 只看该作者
Ubuntu Vision:12.04
CPU Kernel Vision: 3.0.35

使用特权

评论回复
板凳
mini1986| | 2015-6-19 17:11 | 只看该作者
官方sdk里面好像默认只初始化了UART1和UART3,UART1 for debug,UART3 for gps......

使用特权

评论回复
地板
Surpass_sun|  楼主 | 2015-6-19 17:26 | 只看该作者
mini1986 发表于 2015-6-19 17:11
官方sdk里面好像默认只初始化了UART1和UART3,UART1 for debug,UART3 for gps......


通过命令[cat /proc/tty/driver/IMX-uart]可以查看串口的状态,暂时看到的有3个UART
           -------------------------------------------------------------
           root@linaro-ubuntu-desktop:/# cat /proc/tty/driver/IMX-uart
           serinfo:1.0 driver revision:
           1: uart:IMX mmio:0x021E8000 irq:59 tx:0 rx:0 DSR|CD
           2: uart:IMX mmio:0x021EC000 irq:60 tx:0 rx:0 DSR|CD
           3: uart:IMX mmio:0x021F0000 irq:61 tx:4452 rx:327 RTS|DTR|DSR|CD

最下面的uart对应的应该是你说的Debug用的,好用,但是其他的两个都不好用

使用特权

评论回复
5
奥德赛| | 2015-6-19 20:37 | 只看该作者
学习了,谢谢各位的分享

使用特权

评论回复
6
Surpass_sun|  楼主 | 2015-6-23 09:16 | 只看该作者
自己顶一下吧,希望帖子不要沉了

使用特权

评论回复
7
mini1986| | 2015-6-23 13:15 | 只看该作者
先看看CPU主板和基板的uart连接是不是有问题......

使用特权

评论回复
8
舒斯特尔| | 2015-6-23 13:34 | 只看该作者
帮忙顶帖子,不要沉了

使用特权

评论回复
9
Surpass_sun|  楼主 | 2015-6-23 14:33 | 只看该作者
工程师给了以下回复
我检查了一下原理图,SabreAI的CPU板原理图,蓝牙使用的UART3和NOR FLASH(并行接口)是复用的,默认情况下是复用为NOR FLASH引脚的。那么你要想让UART3有效,你需要在板子上做一下设置,见原理图的第18页 U17(NLAS3158),它有2个Select引脚7和10,其高低电平的变化,就可以达到切换的目的。
---对于UART3_RX和TX信号:
(1)你把1脚信号切到11脚;4脚信号切到8脚。这样,UART3_RX和UART3_TX信号,就在硬件上连接起来了。
(2)然后,在软件里,把SD4_CLK引脚复用为UART3_RX_DATA,把SD4_CMD引脚复用为UART3_TXD_DATA。
---对于RTS和CTS信号:
(1)把EIM_EB3复用为UART3_RTS;
(2)知道U509,用和U17一样的方法。把1脚信号切换到11脚。再把EIM_D30复用为UART3_CTS。

确实,这个开发板的硬件设计上,比较复杂一些,不过仔细看,也能够理清楚。必要的时候,请硬件工程师帮你一下!

使用特权

评论回复
10
Surpass_sun|  楼主 | 2015-6-26 08:57 | 只看该作者
根据内核源码[\arch\arm\mach-mx6\board-mx6q_sabreauto.c]中记载
BT使用的UART确实是UART3,对应/dev/ttymxc2

        根据SabreAI的CPU板原理图,蓝牙使用的UART3和NOR FLASH(并行接口)是复用的,默认情况下是复用为NOR FLASH引脚的。
        如果想让UART3有效,需要在板子上做以下设置:
        setenv bootargs_base 'setenv bootargs console=ttymxc3,115200 uart3'
        saveenv
        run bootcmd


              启动之后UART3默认波特率为9600,通过以下命令设置UART3波特率
              stty -F "/dev/ttymxc2" 115200

通过以上配置,BT使用的UART通信正常了。

使用特权

评论回复
11
mini1986| | 2015-7-1 09:18 | 只看该作者
Surpass_sun 发表于 2015-6-26 08:57
根据内核源码[\arch\arm\mach-mx6\board-mx6q_sabreauto.c]中记载
BT使用的UART确实是UART3,对应/dev/ttym ...

学习一下......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝