|
发表于 2018-2-2 12:01:19
|
显示全部楼层
今天有个朋友要做这样一个产品,就是一个产品能过USB线和电脑相连,这个产品有三个模块,1、包含一个4口的USB HUB,2、一个读卡器,能读MS,XD,SD(三合一的卡座)。另外一个单独的CF卡座,3、通过一个30PIN的连接座,和IPOD产品相连,然后再通过USB线和电脑实现通讯。于是上网查找,终于查到IPOD接口的定义,和大家一起分亨。
阿锦 文章来源:中国汽车影音网
苹果公司使用了一家名叫JAE公司的接插件,型号为DD1.这个接口有30针,
接口排列方式为:
1.2.3.4.5.6.7.8.9...........29.30
内部焊接点排列为:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
接口定义为:
1 Ground (-) 地 *
2 Line Out - Common Ground (-) 线路输出 地*
3 Line Out - R (+) R声道线路输出
4 Line Out - L (+) L声道线路输出
5 Line In - R (+) R声道线路输入
6 Line In - L (+) L声道线路输入
7
8 Video Out - Composite Video (for ipod colour when slideshow activated) 复合视频输出 (只有彩屏的ipod有效)******
9
10
11 Serial GND RS-232串口 地
12 Serial TxD RS-232串口 TxD
13 Serial RxD RS-232串口 RxD
14
15 Ground (-) 地 **
16 USB GND (-) USB电源负极 **
17
18 3.3V Power (+) 3.3V电源正极
19 Firewire Power 12 VDC (+) 1394火线12V电源 正极 ***
20 Firewire Power 12 VDC (+) 1394火线12V电源 正极***
21 Accessory Indicator 附件识别接口 ****
22 FireWire Data TPA (-) 1394火线数据 TPA(-)
23 USB Power 5 VDC (+) USB 5V 电源 正极
24 FireWire Data TPA (+) 1394火线数据 TPA(+)
25 USB Data (-) USB 数据(-)
26 FireWire Data TPB (-) 1394火线数据 TPA(-)
27 USB Data (+) USB 数据(+)
28 FireWire Data TPB (+) 1394火线数据 TPB(+)
29 FireWire Ground (-) 1394火线12V电源 负极*****
30 FireWire Ground (-) 1394火线12V电源 负极*****
特殊定义:
* 1,2 与电路板连接
** 15,16 与电路板连接
*** 19,20 与电路板连接
**** 21 通过一个电阻连接到地。 不同的阻抗表明不同的辅助部件被连接。
已知的resistances/functions (欧姆) 是如下:
1k0 - iPod 基座
10k - 照相机适配器
500k - RS-232通信
1M0 - Belkin 自动适配器, iPod 自动地关闭了当力量分开了
***** 29,30 与电路板连接
****** 全部连接在公共地
RS-232连接:控制码:
Button G2 Three Byte Code G3 Seven Byte Code
PLAY/PAUSE 0xFF 0xFD 0xF1 0xFF 0x55 0x03 0x02 0x00 0x01 0xFA
VOL+ 0xFF 0xFD 0xF2 0xFF 0x55 0x03 0x02 0x00 0x02 0xF9
VOL- 0xFF 0xFD 0xF3 0xFF 0x55 0x03 0x02 0x00 0x04 0xF7
SKIP> > 0xFF 0xFD 0xF4 0xFF 0x55 0x03 0x02 0x00 0x08 0xF3
< <SKIP 0xFF 0xFD 0xF5 0xFF 0x55 0x03 0x02 0x00 0x10 0xEB
(button release) 0xFF 0xFD 0xF0 0xFF 0x55 0x03 0x02 0x00 0x00 0xFB
8N+2,8位数据 1位开始位 1位停止位
用9600波特率可以控但是不知道如何接收信息,请问楼上要接收IPOD的信息,是否要发送什么命令?
Button G2 Three Byte Code G3 Seven Byte Code
PLAY/PAUSE 0xFF 0xFD 0xF1 0xFF 0x55 0x03 0x02 0x00 0x01 0xFA
menu 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x40 0xB9
enter 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x80 0x79
up 0xFF 0x55 0x06 0x02 0x00 0x00 0x00 0x00 0x01 0xf7
down 0xFF 0x55 0x06 0x02 0x00 0x00 0x00 0x00 0x02 0xf6
VOL+ 0xFF 0xFD 0xF2 0xFF 0x55 0x03 0x02 0x00 0x02 0xF9
VOL- 0xFF 0xFD 0xF3 0xFF 0x55 0x03 0x02 0x00 0x04 0xF7
SKIP> > 0xFF 0xFD 0xF4 0xFF 0x55 0x03 0x02 0x00 0x08 0xF3
< <SKIP 0xFF 0xFD 0xF5 0xFF 0x55 0x03 0x02 0x00 0x10 0xEB
(button release) 0xFF 0xFD 0xF0 0xFF 0x55 0x03 0x02 0x00 0x00 0xFB
rs232 19200
需要IPOD的提供的认证才能进行通讯。否则只能发不能收。。。
ipod 有几种模式选择,好象是模式4,可以接收,获取,播放时间,歌曲名字等等
我的测试程序如下,功能为只发一次播放、暂停控制指令,但不能控制iPod。请多多指教。谢谢!
#include <REG51.H>
#include <INTRINS.H>
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
void send_2()
// 传送字串
{
SBUF = 0xff;
while(!TI); // 等特数据传送
TI = 0;
delayms(25);
SBUF = 0x55;
while(!TI); // 等特数据传送
TI = 0;
delayms(100);
SBUF = 0x03;
while(!TI); // 等特数据传送
TI = 0;
SBUF = 0x02;
while(!TI); // 等特数据传送
TI = 0;
SBUF = 0x00;
while(!TI); // 等特数据传送
TI = 0;
SBUF = 0x01;
while(!TI); // 等特数据传送
TI = 0;
SBUF = 0xfa;
while(!TI); // 等特数据传送
TI = 0;
}
main()
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率19200
TL1 = 0xFD;
SCON = 0x40; // 设定串行口工作方式
PCON = 0x80; // 波特率倍增
TR1 = 1; // 启动定时器1
IE = 0x0; // 禁止任何中断
send_2(); //发播放、暂停指令
while(1);
}
|
|