27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
发表于 2023-9-15 00:14 | 显示全部楼层
本帖最后由 丰年好大雪 于 2023-9-15 01:31 编辑

最后一代飞利浦CD-Pro2机芯使用了一种古老的双向串行接口,叫做DSA,这个总线的特点是比较类似今天仍然在使用中的SPI接口,但不一致。今天也没有太多的产品使用这种古老的芯片-芯片接口了,相比SPI接口来说DSA有诸多优点,比如允许仅用3根线就允许双向片选传输(SPI需要4根)、速度20M远超SPI的1.4M(实际使用中我达到过15M)。更何况为了研究CD-Pro2的外部控制必须从DSA入手,那就从这个古怪的接口入手吧。我翻译了飞利浦DSA文档的全部,试着把对于我制作CD机来说可能没什么用的部分省略或者去掉。

要搞懂其中许多概念,您需要有一些基础的单片机通讯知识,以及基本的二进制、十六进制换算的经验。可能随着编写会有需要修改帖子的需要,有错误或者不明请指出。

缩写解释:
TOC ——Table Of Contents目录

第一章 DSA 接口
  DSA 接口是用于两个处理器之间通信的接口。 一个称为伺服处理器,另一个称为用户处理器。CD 模块中的伺服处理器控制所有伺服活动,如播放、暂停、跳跃、读取子代码等。用户处理器可以处理其他所有外部工作,比如按键、中断、控制屏幕、控制DAC芯片等等。用户处理器通过 DSA 接口控制伺服处理器。
  对于CD模块中的 DSA 接口实现,16bit数据传输比较实用。 16bit数据包含一个8bit命令字节和一个8bit参数字节。在一个完整命令字符串中,首先是命令字节,然后是参数字节先后发送。参数字节的含义由命令字节决定。如果命令不需要参数字节,则将传输虚拟值(比如8个0)。
  命令和数据字节发送MSB在前。所有数据字节都将以十六进制发送。比如发送十进制的12(命令字节)+8,您需要换算成14H和8H(程序员写法是0x14和0x08),单片机以00010100,00001000发送,共16bit。
  两个处理器都可以向对方发送命令,而无需预先请求。这意味着比如每次CD时间长度改变时,比如跳到下个音轨,CD模块都会将新曲目相关数值自动发送到用户处理器。

第二章 DSA 接口规范
DSA 总线是一种异步、双向内部总线,设计用于两个微处理器之间的通信。 它由三个双向线路组成:
· DATA - 用于启动同步和数据传输
· STB - 用于数据选通(STB 为低电平时 DATA 有效)
· ACK - 用于启动同步、数据传输确认和通信确认
01.jpg

第三章 通讯说明
每次数据通信由三个阶段组成:
· 启动同步 使发送器和接收器同步以进行数据传输
· 数据传输 借助选通信号和确认信号传输所有数据位
· 通信确认 接收器让发送器知道通信是否没有错误。
如果通信出现错误,则有可能重复执行,直到正常。当处理器想要传输数据时,它被称为发送器,它从同步阶段开始,传输数据,并根据请求最终接收通信确认。
启动同步后,另一个处理器会自动成为接收器。

1·开始同步
发送方下拉清零数据线,让对方芯片知道它想要发送一些数据。然后等待,直到接收到 ACK 线上的低电平作为来自识别了该消息的接收器的应答。(这一点略微类似DAC芯片控制广泛使用的IIC接口)
数据传输请求并已准备好。
然后发送器将DATA线设置为高电平并等待ACK线上的高电平。ACK线上的高电平意味着启动同步结束,发送器和接收器都准备好数据传输。
注意,有时两个处理器可能想要同时发送数据。 两者都拉低DATA 线并等待 ACK 线上的确认动作。因此,有必要在同步开始时为发射方设计软件超时逻辑。超时周期 (Tsyn) 过后,伺服处理器将 DATA 线设置为无效(高),并检查用户处理器是否正在生成同步信号(DATA 线保持低电平)。如果是,则首先接收数据。然后伺服处理器可以通过拉低数据线来尝试再次发送。
如果伺服处理器在已经有新数据要发送时无法通过同步阶段,则旧数据将被“覆盖”。
02.jpg

2·数据传输
在这部分通信中,所有数据位都将从发送器传输到接收器。发送器根据要发送的bit置位DATA 线。当 DATA 线电平稳定时,发送器拉低STB 线以告诉接收器 DATA 线上的信息有效。接收器在识别到 STB 线低电平状态后读取 DATA 线。 然后接收方清零ACK 线让发送器知道数据已被读取。发送器拉高STB 线并等待ACK 线高状态。当ACK线变高时,一个数据位被完全传输。一个数据传输阶段内传输的位数为16位
如果伺服处理器无法在(Ttrf)内传输16个数据位,则将DATASTB线设置为高并清零ACK线以进入通信阶段。
03.jpg

3·通讯确认(ACK)
总线上的尖峰可能导致发送器和接收器不同步。因此,有必要在每次数据传输后检查同步状态。该过程由发送器启动。
当发送器发送所有位后,发送器清零ACK 线。此时接收方应该已准确接收到指定的位数。如果接收器的bit计数器不等于此指定计数后,接收器下拉DATA 线,否则该线保持高电平。此后,接收器清零STB 线路。这意味着对于发送器来说,比较的结果在数据线上。发送器读取DATA 线,然后将ACK 线设置为高电平。这对于接收器来说意味着发送器读取了数据线。当接收器识别出 ACK 线高,它将 DATA STB 线设置为高。则现在所有通信均已完成,DSA 总线再次空闲。
  如果通信出现错误,则发射机应从同步阶段开始重复(仅一次)最后一次通信(即有一个bit错误,就整个16bit数据重新发射)。
  如果接收器在Tcom 内的通信确认阶段没有正确反应,伺服处理器(= 发送器)会将其解释为通信错误并将所有线路设置为高电平。DSA 通信的时序图在下列的图中说明:

同步动作:
11.jpg

数据传输动作:
12.jpg

确认动作:
13.jpg

超时定义:
14.jpg

超时定义时间表:
15.jpg

往往我们这些发烧友在DAC设置、控制LCD屏幕这些动作中,我们写单片机并不太重视超时,或者干脆把超时写一个自动挂起当作断点来使用。但对于CD机芯这种实时系统来说,鉴于1.4M每秒的数据流并不能让你慢悠悠的处理所有问题,因此设置超时动作(比如重写、报错、保护关机)非常重要。

3·DSA命令集
伺服处理器的命令分为三组:
· 伺服命令(这些命令使得伺服状态发生变化)
· 信息命令
· 模式设置
一条DSA命令由一个或多个DSA命令参数组成。每个DSA命令参数都有一个唯一的操作码,后跟参数。
当DSA命令由多个命令参数组成时,DSA命令将在收到最后一个(= 最高操作码)命令参数后执行。进入的顺序命令参数不固定,除了最后一个命令参数,因为它会触发命令执行。
3.1 供应商独特的DSA命令(没啥用)
供应商独特的命令是:
命令名称    命令操作码
保留       A0h - AFh

3.2 命令规则
  规则 1同组内的命令可以相互推翻(不额外通知命令重复)。这意味着当前的命令将被中止,并且开始执行刚刚接收到的命令。
  规则 2:如果在执行伺服命令期间接收到信息或模式命令,则伺服处理器开始处理信息或模式命令并继续执行伺服命令。
  规则 3:伺服命令优先于信息和模式命令。所有需要的操作都将后台完成。
  规则 4:当两个命令已被接受并正在执行时,例如伺服命令( 第一个)和信息或模式命令(=第二个),第三个是信息或模式命令,则当前信息/模式命令将被终止,如果第三个命令是伺服命令,那么正在执行的两个命令都将被中止。

原则上,没有固定的命令序列来让 CD 模块执行操作。所有需要的操作都将后台完成。例如,在停止状态下播放曲目 10,只需调用 PLAY-TITLE 命令,值为 10 (0Ah)

3.3 命令恢复
当(有效)命令执行失败时,必须通过重试同一命令至少两次来恢复。

3.4 DSA命令集表格
命令名称
种类
操作码
参数
发送到伺服处理器的命令(十六进制)
播放曲目Play Title
伺服
01h
曲目号(16进制)
停止
伺服
02h
-
读取目录 Read ROC
伺服
03h
00
暂停
模式
04h
-
暂停释放
模式
05h
-
低速前向搜索无边界标志
伺服
06h
00h
高速前向搜索无边界标志
伺服
06h
01h
低速前向搜索有边界标志
伺服
06h
10h
高速前向搜索有边界标志
伺服
06h
11h
低速后向搜索无边界标志
伺服
07h
00h
高速后向搜索无边界标志
伺服
07h
01h
低速后向搜索有边界标志
伺服
07h
10h
高速后向搜索有边界标志
伺服
07h
11h
搜索动作释放
伺服
08h
-
取曲目标题长度
信息
09h
曲目号(16进制)
取碟片完整时长
信息
0Dh
-
跳转到特定的时间
伺服
10h
分钟绝对值(16进制)
11h
秒绝对值(16进制)
12h(开始)
帧绝对值(16进制)
读取长曲目名
伺服
14h
-
设定模式
模式
15h
模式码(另表)
取最后错误码
信息
16h
-
清空错误码
信息
17h
-
主轴电机起转
伺服
18h
00
A-B点播放
伺服
20h
开始分钟绝对值(16进)
21h
开始秒绝对值(16进)
22h
开始帧绝对值(16进)
23h
停止分钟绝对值(16进)
24h
停止秒绝对值(16进)
25h(开始)
停止帧绝对值(16进)
A-B点播放停止
模式
26h
-
获取碟片定义信息
信息
30h
-
获取碟片状态
信息
50h
-
清空曲目目录
模式
6Ah
-
设置DAC模式
模式
70h
DAC模式(略)
A0h-C2h命令对我们没用
服务命令
服务模式关闭
伺服
F0h
00h
请求服务模式版本号及启动服务模式
F0h
01h
光头滑撬关闭
F1h
00h
光头滑撬向外滑300毫秒
F1h
01h
对焦停止
F2h
00h
对焦启动
F2h
01h
主轴停止
F3h
00h
主轴起转
F3h
01h
轴向停止
F4h
00h
轴向启动
F4h
01h
激光头启动
F5h
00h
激光头停止
F5h
01h
诊断模式
F6h
-
/低增益
F7h
-
跳过盘面凹坑
F8h
高有效位凹坑数量
F9h(开始)
低有效位凹坑数量
接收自伺服处理器的响应命令
找到Found(此命令更像是一种应答)
伺服
01h
跳转时间/暂停/暂停释放
/起转/A-B点播放
/A-B点播放结束
停止完成
伺服
02h
-
碟片状态
信息
03h
当前无碟/有碟/仓内碟片8cm /12 cm/CD碟/CD-RW碟/完整碟片/未写完碟片
错误值
信息
04h
错误信息码
标题长度
信息
09h
请求曲目秒长度高有效位
0Ah
请求曲目秒长度低有效位
当前标题
伺服
10h
新音轨数(16进)
当前索引
伺服
11h
新索引数(16进)
当前分钟
伺服
12h
新分钟(16进)
当前秒
伺服
13h
新秒(16进)
时间绝对值
信息
14h
新分钟绝对值
15h
新秒绝对值
16h
新帧绝对值
模式状态
信息
17h
模式设置码(另表)
目录值
伺服
20h
最小音轨数量
21h
最大音轨数量
22h
开始引出时间分钟数
23h
开始引出时间秒数
24h
开始引出时间帧数
A-B播放时间释放
模式
26h
-
碟片识别码
信息
30h
碟片识别码0列
31h
...
32h
...
33h
...
34h
碟片识别码4列
长目录值
伺服
60h
音轨数量
61h
控制与地址区
62h
起始分钟
63h
起始秒
64h
起始帧
目录已清空
信息
6Ah
-
DAC模式
模式
70h
DAC模式(略)
伺服版本号
伺服
F0h
伺服版本号

27

主题

1

好友

484

积分

业余侠客 当前离线

Rank: 4

UID
787724
帖子
422
精华
0
经验
484 点
金钱
394 ¥
注册时间
2015-3-20
 楼主| 发表于 2023-9-15 01:41 | 显示全部楼层
古老的Discuz!论坛工具实在是太不方便了,上边贴出的命令表格分割线比较浅,基本看不出来,大家凑合看吧。我把DOC文档分享了,想研究的可以继续下载观看,部分格式在论坛中无法正确显示,大家可以对照着原版英文说明书研究我翻译的版本。

https://share.weiyun.com/XbMZuwsg   中文版DSA码说明
https://share.weiyun.com/UmcYOyLQ   英文原版

12

主题

3

好友

104

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
894833
帖子
132
精华
0
经验
104 点
金钱
85 ¥
注册时间
2020-12-23
发表于 2023-9-15 10:03 | 显示全部楼层
感谢前辈详尽的指导

2

主题

0

好友

35

积分

注册会员 当前离线

Rank: 2

UID
819754
帖子
62
精华
0
经验
35 点
金钱
31 ¥
注册时间
2016-9-14
发表于 2024-1-13 18:07 | 显示全部楼层
正学习   好资料

15

主题

3

好友

402

积分
     

业余侠客 当前离线

Rank: 4

UID
5606
帖子
366
精华
0
经验
402 点
金钱
312 ¥
注册时间
2005-9-17
发表于 2024-2-14 17:40 | 显示全部楼层
好帖

23

主题

0

好友

1556

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
282322
帖子
4592
精华
0
经验
1556 点
金钱
1508 ¥
注册时间
2011-1-13
发表于 2024-2-14 18:05 来自手机端 | 显示全部楼层
非常用心的高手

2

主题

0

好友

52

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
1087252
帖子
55
精华
0
经验
52 点
金钱
48 ¥
注册时间
2024-1-1
发表于 2024-2-17 16:18 | 显示全部楼层
这种文章和良心技术资料应该多来...感谢分享。

1

主题

0

好友

448

积分
     

业余侠客 当前离线

Rank: 4

UID
590639
帖子
470
精华
0
经验
448 点
金钱
430 ¥
注册时间
2013-5-14
发表于 2024-2-20 09:46 | 显示全部楼层
感谢楼主分享这么详细的技术贴。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部