Wiki

The most recent version of this page is a draft.DiffThis version (27 Jan 2020 14:56) was approved by Joshua Berlin.The Previously approved version (16 May 2018 11:36) is available.Diff

This is an old revision of the document!


Master Control Port Boot time I/O (ADAU145x)

Click here to return to the Master Control Port page

The master control port I/O block allows communication with one external device during DSP program initialization. Typically this block is used to configure an external device like a converter or codec. Communication (read or write) over the master control port bus (I2C or SPI) occurs only once at start-up of the DSP program, and prior to audio processing. The data transferred between host and device is defined in a SigmaStudio sequence file which can be generated using the SigmaStudio sequence window.

Configuration

Click on to configure the parameters.

I2C configuration


GUI Control

GUI Control NameDefault ValueRangeFunction Description
Bitrate400 kHz 20 kHZ - 400 kHZI2C Speed
Device Address00 – 127I2C Slave Device Address
Sub-Address Bytes21-4 Length of the sub address
Sequence file--Device write/read sequence to execute at boot time.This file can be defined and saved from SigmaStudio's sequence window.


SPI configuration


GUI Control

GUI Control NameDefault ValueRangeFunction Description
Bitrate100 kHz 100 kHZ - 100000 kHZSPI Speed
SS_M Pin00 SPI Slave Select Channel
MP Slave Select ChannelDisabled(enabled by click on radio button)0 - 7 SPI Slave Select Channel
Sub-Address Bytes21-4 Length of the sub address
Command Length11-4 Length of the command sent in bytes
Write Instruction00-255Instruction value for a write operation (0x0 for ADI audio devices, typically 0x2 for eeprom/flash)
Write-Enable instruction60 - 255Instruction value for device write-enable operation (ignored for Master Control Port I/O Boot)


Support for Multiple Slaves

Multiple external devices can be configured by creating multiple instances of the master control port boot time IO module and selecting appropriate slave select in the configuration parameters.
The sequence of booting up of different slaves can be configured by using the drop down list next to the image as shown below

Support for Different SPI Slave Select Pins

If the device to be programmed is selected through MP0 (the /SS_M pin), no configuration is required in the register controls. Otherwise, the multipurpose pin must be configured to act as the slave select in the Register Window. (Hardware Configuration → ICx - ADAU145x Register Controls → MULTIPURPOSE/AUXADC)



  1. Slave Select Channel → 'Slave Select Channel x'
  2. MPx pin mode → 'Slave Select for Master SPI port'
  3. MPx pin function → 'Multipurpose function'



The following table shows the mapping between module's parameter and the register control window. Please note that for some other blocks, there is an offset of 1 between the module parameter and the register control window.

'Slave Select' in Configuration Window 'Slave Select Channel' in the Register control
0 Slave Select Channel 0
1 Slave Select Channel 1
2 Slave Select Channel 2
3 Slave Select Channel 3
4 Slave Select Channel 4
5 Slave Select Channel 5


Creating Sequence File for SPI/I2C slave not supported by SigmaStudio

Use the following file and edit for your slave.

ADAU1361.xml
<?xml version="1.0" standalone="no"?>
<ROM IC="ADAU1361" IC_Address="112" Address_byte_length="2">
  <dateTime>2017-03-16T05:12:14.2859851Z</dateTime>
  <version>3.14.1.1593</version>
  <page modetype="Mode 0">
    <action instr="writeXbytes" len="3" addr="16384" ParamName="Reg1" DspName="IC 1">0F</action>
    <action instr="writeXbytes" len="8" addr="16386" ParamName="Reg2" DspName="IC 1">00 FD 00 0C 20 01</action>
    <action instr="delay" ParamName="IC 1.Delay" DspName="IC 1">00 64</action>
    <action instr="writeXbytes" len="3" addr="16405" ParamName="IC 1.Serial Port Control Registers.Serial Port Control 0" DspName="IC 1">00</action>
  </page>
</ROM>

Please follow the steps below to edit the XML for your Slave.

  • Edit IC, IC_Address and Address_byte_length fields in xml. Please note that IC_Address should be an 8-bit I2C address in decimal format. Address_byte_length refers to the length, in bytes, of the external IC's address space.
<ROM IC="ADAU1361" IC_Address="112" Address_byte_length="2">
  • Add your register writes as shown below.
<action instr="writeXbytes" len="8" addr="16386" ParamName="Reg2" DspName="IC 1">00 FD 00 0C 20 01</action>
Please match all the fields as follows. 
      instr => "writeXBytes" 
      len => Data Length in bytes+ Address_byte_length
      addr => Register Address in decimal (not hexadecimal)
      Then the value part should have the register values in Hexadecimal. A space should separate each data as shown in the example.   In this example len => 6 (data length)  + 2 (Address_byte_length) = 8
  • You can add delays as shown below.
<action instr="delay" ParamName="IC 1.Delay" DspName="IC 1">00 64</action>

Delay is in milliseconds (Hexadecimal Format)

Supported ICs

  1. ADAU145x
/srv/wiki.analog.com/data/pages/resources/tools-software/sigmastudio/toolbox/mastercontrolport/mastercontrolportio.txt · Last modified: 12 Feb 2024 19:01 by Felipe Neira