mod NAIM CD-player with PMD-200 into stand alone DAC

I have just discovered this thread and, as I spent a lot of time playing with the PMD200 some years ago, I find it very interesting.

I was working with the preliminary data sheet, which was not very helpful, and the chip was very buggy. The output jitter makes re-clocking essential. The mentioned problem about having to send the setup information twice is because the output settings have to be in place before the input settings are sent. If you send the output settings first, the input syncs itself to the right output settings. Apparently, later versions of the chip do not have the option of a working hardware mode, which caused me to waste a lot of time.

I gave up on the chip when, after finally getting it working in my system, it would occasionally swap the left and right channels for no apparent reason.
 
I would like to first thank jpk73 and dqfan for the information they provided on this thread.

When I used 8051 and IIC to initialize PMD200 in the past two days, data writing failures often occurred. After carefully reading some of the discussions and pictures you posted before it finally led me to figure out the reason for the IIC write failure. I think PMD200 must delay some time after writing the command before writing the next command. My current approach is to delay 5ms between two commands In addition, the speed of IIC should not be the problem. I am currently using a speed of about 130KHz to write command to PMD200. I only initialize the PMD200 three times in a row now, and the 9 commands written almost never have non-ACK problems. Although the PMD200 still has some work to do, such as rewritting the command when sampling rate changing, the most exciting thing is that it took me less than a day to solve the PMD200 initialization problem.

Once again, thank you jpk73 and dqfan for your efforts, thank you!
 
Hi jpk73

I only made a small modification, although it took me a lot of time to find it. The experimental results show that the delay of 5ms has the highest probability of success. Hope it helps everyone.
Snap1.jpg
 
Yes, I only intercepted the more important parts, because the other code has nothing to do with PMD200. I have rearranged all the code related to PMD200 as follows. The control method is the same: do RESET three times first and then write the command. The difference is only that after writing the command, there will be a delay of 5ms before writing the next command. I add the delay between the two commands because the PMD200 itself is a DSP, It may take some time to complete the internal settings after receiving the command. I occasionally encounter similar situations in my work. After all, the company no longer exists and I can only guess at how it works.
 

Attachments

  • Snap2.jpg
    Snap2.jpg
    109.5 KB · Views: 11
  • Like
Reactions: 1 user
Thank you, got it! You just used a different i2c library plus your own code plus different input settings for the PMD200. But obviously you didn't follow this advice:
the output settings have to be in place before the input settings are sent. If you send the output settings first, the input syncs itself to the right output settings.
If every command is separated by a delay of 5ms: is it still necessary to send the output settings before the input settings?

Snap2.jpg
 
Today, after countless email verifications, my account ID was finally restored.Still the same, first of all I was very excited when I saw the content of this post. As I said in the previous topic: Without the help of master jpk73, I have given up on PMD200 "dsp" countless times.

再次感谢“Pureaudio”您无私而非常具价值的分享关于这个芯片的细节.我曾经和jpk73讨论过为什么PMD200在naim上也需要重复多次写入?为什么偶尔会回到初始化状态?多年过去了我一直没有搞明白..........于是您今天的分享简直是“点睛之笔”,而今天我验证了逻辑写入方式。证实您已经找到问题的关键点,再次感谢你专业的分析。(y)(y)(y)(y)(y)(y)666 期待你的更多分享...

Thanks again JPK73, for your perfect optimized code.(y)(y)(y)(y)(y)(y)666
 
  • Like
Reactions: 1 user