主题中讨论的其他器件:SRC4392、
在系统启动期间、所有寄存器都可以进行初始化、而不会在我们的应用中出现问题。 但我们需要更改一些寄存器的值、例如0x0D、以在 RX1和 RX2之间切换、并能够更改寄存器、假设在启动后可以再次读取和写入寄存器、修改诸如0x0D 等寄存器的步骤是什么。 谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 Yong:
您应该能够写入所需的寄存器并通过读取操作验证写入。 下面是 用于初始化器件和示例代码的分步式指令。
香港特区政府
应使用以下序列来初始化 SRC4392。
1.接通电源并进行外部复位。
2.写入第0页上除寄存器0x01外的所有控制寄存器
3.应用 MCLK,以及端口 A 和 B 所需的任何音频时钟。
4.写入第0页上的寄存器0x01、为所需的块上电。
5.通过将寄存器0x08、页0、的 TXBTD 位置1来禁用 DIT 缓冲区传输。
6.将0x02写入寄存器0x7F 以将第2页设置为活动页。
7.根据需要将数据写入第2页上的 DIT C 和 U 缓冲区。
8.将0x00写入地址0x7F 以将第0页设置为活动页。
9.通过将寄存器0x08、页0中的 TXBTD 位设置为0来启用 DIT 缓冲区传输。
这将使用写入第2页寄存器的数据更新 DIT TA 缓冲区。
*
实现上述功能的示例:
1.外部复位
2.在第0页设置控制寄存器(始终先设置寄存器地址、然后设置数据[十六进制的所有值])
w e0 7f 00 //设置寄存器页0
w e0 03 20 // I²S 端口 A:时钟从器件、24位音频 MSB、来自接收器的输出信号-不是来自 SRC
w e0 04 00 // I²S 端口 A:MCLK 源= MCLK;MCLK 频率= 128x LRCLK (除128x 外的 MCLK 频率、仅用于主模式运行)
w e0 07 00 //时钟启动输出;发送器 MCLK 分频器=> FPGA CLK / 128
w e0 09 01 //通过 SPI 更新发送器通道状态
w e0 0d 00 //接收器输入=> RX1、参考 CLK RXCKI (外部)
w e0 0E 00 //如果没有时钟,接收器静音,外部超时钟 引脚、CLK 分频器= 4
//根据数据表确定的接收器 PLL 参考时钟(表4、S.60)
w e0 0F 22
w e0 10 00
w e0 11 00
//
w e0 2D 02 // SRC Source ==接收器,ref CLK FPGA
3.启用时钟(MCLK、帧同步、采样时钟)
4. W e0 01 37 //打开 SRC、接收器、发送器、I²S 端口 A
以下是步骤5至9的脚本:
w e0 08 08 //禁用 DIT 缓冲器传输
w e0 7f 02 //将页面设置为2
w e0 2e ee //将 ee 写入第2页上的 reg 2e
w e0 2f ff //将 ff 写至第2页上的寄存器2f
w e0 7f 00 //将页面改回0
w e0 08 00 //启用 DIT 缓冲器传输
w e0 7f 02 //切换回第2页
r e0 2e 01 //回读第2页上的 reg 2e
r e0 2f 01 //回读第2页上的寄存器2f
w e0 7f 00 //将页面设置为 PAGE 0
香港特别行政区政府
此致、
阿拉什
尊敬的 Arash:
在我们的当前设计中、我们不能使用外部复位来重新配置 SRC4382、可以使用寄存器0x01中的内部复位
位7复位? 我们需要通过执行第二轮 SRC4382初始化来更改0x0D、除非重新启动整个系统、否则绝不能这样做。
我的印象是 SRC4382只能在启动时初始化一次、不是吗? 初始化完成后对寄存器的任何写入访问(重新初始化)
将导致我们观察到的 SRC4382无 ACK 错误。
谢谢
勇