problem with setting the SDATA Mode to Master
Hi forum,
I am trying to make a 1761 codec to act as the master on the BCLK (I2S bit clock).
I am setting it in Sigmastudio and I can see the bit 0 in register 0x4015 changing from 0 to 1.
When I export the SigmaStudio files then on the _REG.h file the BYTE on register address 0x4015 is always set to 0x0000
Any idea what is going on? What doesn't this change reflect on the exported files?
I am saving my project and compile before exporting
thank you
Dimitris
Hi Dimitris,
The capture window does show the bit is set (after a compile-link-download) when I program the serial port as a master:
The default_download( ) function should replicate this download operation. I wonder if you are looking at the right file for the value? I see the "xx_IC1_REG.H" file has the register value cleared to 0x00. But when I look at the "xxx_IC1.H" file where the download function is defined, I see the register is set there with Bit 0 set:
/* Register Default - IC 1.Serial Port Control Registers */
#define R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_SIZE 2
ADI_REG_TYPE R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_Default[R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_SIZE] = {
0x01, 0x00
};
(...)
#define DEFAULT_DOWNLOAD_SIZE_IC_1 39
void default_download_IC_1() {
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_SAMPLE_RATE_SETTING_IC_1_ADDR, REG_SAMPLE_RATE_SETTING_IC_1_BYTE, R0_SAMPLE_RATE_SETTING_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_DSP_RUN_REGISTER_IC_1_ADDR, REG_DSP_RUN_REGISTER_IC_1_BYTE, R1_DSP_RUN_REGISTER_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_CLKCTRLREGISTER_IC_1_ADDR, REG_CLKCTRLREGISTER_IC_1_BYTE, R2_CLKCTRLREGISTER_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_PLLCRLREGISTER_IC_1_ADDR, REG_PLLCRLREGISTER_IC_1_BYTE, R3_PLLCRLREGISTER_IC_1_Default );
SIGMA_WRITE_DELAY( DEVICE_ADDR_IC_1, R4_DELAY_IC_1_SIZE, R4_DELAY_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_SERIAL_PORT_CONTROL_0_IC_1_ADDR , R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_SIZE, R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_ALC_CONTROL_0_IC_1_ADDR , R6_ALC_CONTROL_REGISTERS_IC_1_SIZE, R6_ALC_CONTROL_REGISTERS_IC_1_Default );
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_MICCTRLREGISTER_IC_1_ADDR,
When I play with the serial port control register bits, by setting serial port pulse mode, rising edge polarity on BCLK and LRCLK with master mode, I see the register value change in the exported files to what matches during download with a value of 0x39.
/* Register Default - IC 1.Serial Port Control Registers */
#define R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_SIZE 2
ADI_REG_TYPE R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_Default[R5_SERIAL_PORT_CONTROL_REGISTERS_IC_1_SIZE] = {
0x39, 0x00
};
So it looks to me the default_download( ) function uses the register values defined in the same source file.
-JT
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.

