|
| CXD2545貌似不需要烧录代码,就是一个设备,如同HT1621一样,控制它就行了,前提是要知道它的指令。 |
hi等你 发表于 2026-10-8 09:03 我有台先锋T-05,用的就是1167,同样SPDIF输出,实际用下来和2545差距蛮大,建议你直接研究2545,硬件线路还简单 |
| 这个代码是求不到的,1主题,5个回帖就别想了,得具备两个要素,您是cd硬件专家音乐发烧,当然一天到晚把通透,模拟味,推力放嘴上就别想了,第二个要素您得是单片机大佬,熟悉i2c等协议,我正在写这代码,不过不是你要求的一步登天CXD2545,我是从cxd1167开始写的简单一些,我现在程序卡在读取TOC焦头烂额,这个很冷门,路也很难走,但总得有人去走,楼上就别贴代码了,这个代码是搞笑的 |
小青龙2150 发表于 2026-10-5 08:45 我是某鱼买的成品MCU,型号STC89C52RC,实际装机使用中用sony213B光头没问题,但用夏普光头某些片子会跳轨,用先锋光头只能读取TOC信息,应该是循迹增益不够 目前的想法是最好有全套例程,自己修改一下写入MCU,水平实在有限 |
|
如果你做的是 纯 CD 转盘,重点通常是: 主轴电机控制 进给电机控制 聚焦/循迹伺服 TOC 读取 音频数据输出 播放/暂停/停止/跳轨控制 曲目号、时间、状态显示 这些功能不能只靠 CXD2545 一个芯片完成,必须看整机方案。 . 控制代码不要从零写,建议基于参考方案移植 比较稳妥的做法是: 找一台使用 CXD2545Q 的 VCD/CD 机电路图; 找到 MCU 与 CXD2545 之间的控制线; 看它用的是: I²C 类 I²C / 两线总线 并行控制 专用串行总线 状态标志 + 按键逻辑 再根据原机 MCU 程序或维修资料整理出: 初始化序列 播放命令 停止命令 跳轨命令 读取曲目号/时间 状态标志解析 |
|
sbit CD_DATA = P1^0; sbit CD_CLK = P1^1; sbit CD_STB = P1^2; void CD_Write(uchar cmd) { uchar i; CD_STB = 0; for(i = 0; i < 8; i++) { CD_CLK = 0; CD_DATA = (bit)(cmd & 0x80); cmd <<= 1; DelayUs(5); CD_CLK = 1; DelayUs(5); } CD_STB = 1; DelayMs(2); } //================== CXD2545 标准指令集 ================== void CD_Reset(void) { // 复位 CD_Write(0x18); } void CD_Play(void) { CD_Write(0x01); PlayFlag = 1; StopFlag = 0; } void CD_Pause(void) { CD_Write(0x02); PlayFlag = 0; } void CD_Stop(void) { CD_Write(0x00); PlayFlag = 0; StopFlag = 1; } void CD_Prev(void) { CD_Write(0x05); if(Track > 1) Track--; } void CD_Next(void) { CD_Write(0x04); Track++; } void CD_FF(void) { // 快进 CD_Write(0x03); } void CD_FR(void) { // 快退 CD_Write(0x0B); } void CD_Open(void) { CD_Write(0x0D); TrayOpen = 1; } void CD_Close(void) { CD_Write(0x0E); TrayOpen = 0; DelayMs(1500); } 仅供参考 |