/*CS5460_Note_2*/

1、记住所有寄存器都是24位的。命令不是24位的命令是8位的!所有的寄存器都是可读写

image

2、上图是读写命令寄存器。

W/R位:0à读寄存器操作;1à写寄存器操作;

RA[4:0]:24位寄存器的地址位。详细见datasheet!

3、串行接口:

    1>CS(有个上划线,word不知道怎么表达,所以省去了):片选,低电平有效;CS=1时,SDI、SDO、SCLK输出将保持高阻抗。

    2>SDI:串行数据输入脚(数据写进5460);

    3>SDO:串行数据输出脚(数据从5460出来让你从单片机中读);

    4>SCLK:串行时钟输入脚,控制数据移出或移入。每个上升沿就将一个数据位进行读出或写入,即每个数据位操作都伴随一个时钟 脉冲。

4、串口读/写:下图为时序图。注意高位在前,先把高位送出去或读进来,即左移数据。

image 

Register Write

       When a command involves a write operation, the serial port will continue to clock in the data bits (MSB first) on the SDI pin for the next 24 SCLK cycles. Command words instructing a register write must be followed by 24 bits of data (这24比特跟随这24个时钟脉冲走).

Register Read

       当启动了读命令,串口将在下面8个、16个或24个SCLK周期启动SDO脚上的寄存器内容的转移(从高位开始)。寄存器读指令可以终止在8位的边界上(如,读出时可只读8、16或24位)。同样,数据寄存器读出允许采用“命令链”。因此,读寄存器时,MCU可同时发送新指令,新指令将被立即执行,并可能终止读操作。例如,命令字写入后用来读取某一输出寄存器的值,进行了16个连续的读数据+串行时钟脉冲后,执行写命令字(如状态寄存器清零命令),数据从SDI引脚输入,同时剩下的8位读出数据被传送到SDO引脚。又如,用户仅需从读操作中获取16位有效位时,可在SDO读出8位数据后从SDI输入第二个读命令(一般不需要这样,直接读出24位数据,中途无需在写入命令,这样操作有点复杂,除非你是高手。我们一般都是读出24位数据,中途没写入其他命令。)。在读周期,当从SDO引脚输出数据时,必须用SYNC0(NOP)使SDI引脚处于选通状态。(ENGLISH) When a read command is initiated , the serial port will start transferring register content bits (MSB first) on the SDO pin for the next 8,16, or 24 SCLK cycles .During the read cycle, the SYNC0 command(NOP) should be strobed on the SDI port while clocking the data from the SDO port.

5、串口初始化:串口与SCK不同步是有可能的。一旦发生这种情况,任何输入5460的有效都有可能产生奇异的动作。因此初始化是任何写和读的前提!因此需要初始化串口:

    1>5460上电(若已上电,recycle the power)

    2>硬件复位

   3>向串口发初始化序列,3个SYNC1(0xFF)或更多,紧随着一个SYN0(0xFE)

6、5460上电后进入有效状态(不在睡眠状态或等待状态中)。下列操作哦可保证5460工作在有效状态:

   1>5460上电(若已上电,recycle the power)

   2>硬件复位

   3>软件复位

当芯片工作在睡眠状态或等待状态时,将其唤醒的指令(上电/暂停)同样可使芯片进入有效状态。但需要注意的是用户必须确保串口已经初始化过,否则先对串口初始化然后才能写上电/暂停命令。

7、5460可以由2.5~20MHZ范围的时钟驱动。用户应适当设置分频比K,以确保MCLK/K处于2.5~5MHZ. The K divider value is set with the K[3:0] bits in the Configuration Register

原文地址:https://www.cnblogs.com/Double0Seven/p/2176513.html