w
IMPORTANT NOTICE
Dear customer, As from August 2nd 2008, the wireless operations of STMicroelectronics have moved to a new company, ST-NXP Wireless. As a result, the following changes are applicable to the attached document.
Company name - STMicroelectronics NV is replaced with ST-NXP Wireless. Copyright - the copyright notice at the bottom of the last page " STMicroelectronics 200x - All rights reserved", shall now read: " ST-NXP Wireless 200x - All rights reserved". Web site - http://www.st.com is replaced with http://www.stnwireless.com Contact information - the list of sales offices is found at http://www.stnwireless.com under Contacts.
If you have any questions related to the document, please contact our nearest sales office. Thank you for your cooperation and understanding. ST-NXP Wireless
ww.stnwireless.com
PM0028 Programming manual
Low level drivers for STw5098 audio codec
Introduction
The purpose of this package is to deliver to the software engineers implementing the STw5098 within a system, the necessary software drivers to ease access to all of the functions available in the device. The functions enumerated hereafter intend to use intuitive names both for the labeling of the functions and the required parameter(s). Required document is the latest version of STw5098 datasheet.
July 2007
Rev 1
1/82
www.st.com
Contents
PM0028
Contents
1 STw5098 within a system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. 1 1. 2 1.3 Control interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Overall philosophy of the driver package . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Categories of drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 3
Use of the drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. 1 Power control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 device_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 analog_block_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 digital_io_voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 analog_supply_voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 headset_plugin_detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 software_reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2
Analog input and mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 Analog input (MIC path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Analog Gain (MIC path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Analog Mixing (MIC path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Analog Input (LINE_IN path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Analog gain (LINE_IN path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Analog Mixing (LINE_IN path) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3. 3
Analog outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.1 3.3.2 3.3.3 Line out management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Management of Headphone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Loudspeaker management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4
Analog to digital and digital to analog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1 3.4.2 3.4.3 ad_conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 da_to_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 analog_output_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3. 5
Audio interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.1 3.5.2 AD audio interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 DA audio interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2/82
PM0028
Contents
3. 6 3.7
Automatic gain control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6.1 agc_act_on_line_in_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Control interface and interrupt control . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7.1 3.7.2 Control Interface SPI out mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Interrupt control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.8
DSP functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.8.1 3.8.2 DSP functions for analog to digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 DSP functions for digital to analog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.9
PLL (Phase-Locked Loop) and CLOCK CONTROL . . . . . . . . . . . . . . . . . 62
3.9.1 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 master_clock_frequency_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 set_master_clock_frequency_range . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 da_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ad_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 da_output_clock_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ad_output_clock_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 da_master_generator_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ad_master_generator_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 set_da_master_mode_coeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 da_master_mode_freq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 set_ad_master_mode_coeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 ad_master_mode_freq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 da_pcm_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 ad_pcm_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 master_clock_input_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 pll_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 master_clock_inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 master_clock_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 internal_oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4
List of functions classified by register number . . . . . . . . . . . . . . . . . . 70
4. 1 4. 2 4. 3 4. 4 Register CR0 to CR13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Register CR14 to CR19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Register CR20 to CR29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Register CR30 to CR35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3/82
List of tables
PM0028
List of tables
Table 1. Table 2. Table 3. Table 4. Table 5. Table 6. Table 7. Table 8. Table 9. Table 10. Table 11. Table 12. Table 13. Table 14. Table 15. Table 16. Table 17. Table 18. Table 19. Table 20. Table 21. Table 22. Table 23. Table 24. Table 25. Table 26. Table 27. Table 28. Table 29. Table 30. Table 31. Table 32. Table 33. Table 34. Table 35. Table 36. Table 37. Table 38. Table 39. Table 40. Table 41. Table 42. Table 43. Table 44. Table 45. Table 46. Table 47. Table 48. Device_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 analog_block_power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 digital_io_voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 analog_supply_voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 headset_plugin_detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 software_reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 mic_amp_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 mic_amp_enable_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 mic_amp_mute_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 mic_bias_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 mic_bias_pull_down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 mic_preamp_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 set_mic_preamp_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 mic_attenuator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 set_mic_attenuator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 mic_to_ad_mix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 mic_to_da_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 line_in_amp_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 line_in_amp_enable_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 line_in_amp_mute_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 line_in_amp_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 set_line_in_amp_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 line_in_to_ad_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 line_in_to_da_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 unused_analog_in_bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 line_out_enable_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 line_out_mute_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 line_out_input_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 line_out_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 set_line_out_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 headphone_enable_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 headphone_vcm_generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 headphone_mute_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 headphone_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 set_headphone_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 set_common_mode_voltage_level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 loudspeaker_enable_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 loudspeaker_limit_ctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 loudspeaker_input_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 loudspeaker_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 set_loudspeaker_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 ad_conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 da_conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 da_to_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 analog_output_mixer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ad_bit_number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ad_audio_interface_format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 ad_interface_delayed_or_polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4/82
PM0028 Table 49. Table 50. Table 51. Table 52. Table 53. Table 54. Table 55. Table 56. Table 57. Table 58. Table 59. Table 60. Table 61. Table 62. Table 63. Table 64. Table 65. Table 66. Table 67. Table 68. Table 69. Table 70. Table 71. Table 72. Table 73. Table 74. Table 75. Table 76. Table 77. Table 78. Table 79. Table 80. Table 81. Table 82. Table 83. Table 84. Table 85. Table 86. Table 87. Table 88. Table 89. Table 90. Table 91. Table 92. Table 93. Table 94. Table 95. Table 96. Table 97. Table 98. Table 99. Table 100.
List of tables ad_channel_number_spl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ad_master_slave_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ad_data_pin_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ad_clock_pin_polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 da_bit_number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 da_audio_interface_format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 da_interface_delayed_or_polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 da_channel_number_spl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 da_master_slave_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 da_clock_pin_polarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 agc_act_on_line_in_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 agc_act_on_mic_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 agc_action_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 agc_output_level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 set_agc_output_level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 agc_attack_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 set_agc_attack_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 agc_decay_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 set_agc_decay_time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 spl_output_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 spl_output_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 irq_source_select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 get_lrq_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 lrq_pin_behaviour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 get_overflow_status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 digital_ad_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 set_digital_ad_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 ad_channel_swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 ad_voice_high_pass_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 ad_audio_dc_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 ad_sample_rate_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 ad_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 ad_to_da_sidetone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 set_ad_to_da_sidetone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ad_mono_stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 da_to_ad_mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 set_da_to_ad_mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 da_treble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 set_da_treble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 da_bass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 set_da_bass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 digital_da_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 set_digital_da_gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 da_dynamic_compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 da_channel_swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 da_mono_stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 da_voice_high_pass_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 da_sample_rate_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 da_filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 master_clock_frequency_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 set_master_clock_frequency_range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 da_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5/82
List of tables Table 101. Table 102. Table 103. Table 104. Table 105. Table 106. Table 107. Table 108. Table 109. Table 110. Table 111. Table 112. Table 113. Table 114. Table 115. Table 116. Table 117. Table 118. Table 119. Table 120. Table 121. Table 122. Table 123. Table 124. Table 125. Table 126. Table 127. Table 128. Table 129. Table 130. Table 131. Table 132. Table 133. Table 134. Table 135. Table 136. Table 137. Table 138. Table 139. Table 140. Table 141. Table 142. Table 143. Table 144. Table 145. Table 146. Table 147. Table 148. Table 149. Table 150. Table 151. Table 152.
PM0028
ad_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 da_output_clock_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 ad_output_clock_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 da_master_generator_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ad_master_generator_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 set_da_master_mode_coeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 da_master_mode_freq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 set_ad_master_mode_coeff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 ad_master_mode_freq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 da_pcm_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 ad_pcm_master_mode_ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 master_clock_input_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 pll_control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 master_clock_inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 master_clock_signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 internal_oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Register CR0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Register CR1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Register CR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Register CR3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Register CR4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Register CR3 - CR4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Register CR5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR5 - CR6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Register CR8 - CR9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Register CR10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Register CR11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Register CR10 - CR11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Register CR12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Register CR13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Registers CR12 - CR13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Register CR14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Register CR15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Register CR16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Register CR17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Register CR18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Register CR19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Register CR20- CR21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Register CR23 - CR24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Register CR22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Register CR25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Register CR26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Register CR27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Register CR28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Register CR29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Register CR30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Register CR31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Register CR32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6/82
PM0028 Table 153. Table 154. Table 155. Table 156.
List of tables Register CR33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Register CR34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Register CR35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7/82
STw5098 within a system
PM0028
1
1.1
STw5098 within a system
Control interface
The STw5098 has a versatile control interface permitting both accesses in I2C mode and in SPI mode. Thus, the system designer can choose between these 2 interfaces.
1.2
Overall philosophy of the driver package
The delivered drivers and functions are located on the next upper layer compared to the level where the interface drivers such as I2C or SPI are located. This means that the drivers/functions described in this manual call lower level modules driving the data transfer on a given interface. STw5098 interface is based on an interface between its control registers and a user. The following functions and drivers are based on an I2C connection to the device. Functions related to this elementary data transfer need to be customized according to each application.
1.3
Categories of drivers
In this documents, drivers are split into 9 groups. These groups are related to the various entities of the device. These are: Power management, Analog inputs and analog mixing, Analog output, Analog to digital and digital to analog conversion, DSP functions, Audio data interfaces, Interrupt control, Automatic gain control, Phase locked loop (PLL) and clock control,
Chapter 3: Functions describes each group of functions in details.
8/82
PM0028
Use of the drivers
2
Use of the drivers
These low level drivers permit to configure registers of the STw5098 audio codec by only calling functions with its corresponding parameters. They are written in C language. The software code, supplied with this documentation, has been tested on a target platform, and is usable in C and C++ environments. It can be applied to any hardware target.
Header files
Header files to include in your project in order to use the STw5098 low level drivers: #include "stw5098_low_level_drivers.h" #include "stw5098_register_values.h"
Functions to rewrite before using low level drivers:
These low level drivers are based on a control interface to communication with the audio codec. For the STw5098, the control interface can be I²C or SPI. The control interface is platform dependent; this is why it is necessary to rewrite the implementation of functions used for this purpose. The 2 functions to rewrite are the functions used to read and write the audio codec registers: stw5098_read_register stw5098_write_register
If you do not modify these functions, the low level drivers have no effect on the audio codec. You can see below functions prototypes, and an example of implementation.
"stw5098_read_register" prototype
char stw5098_read_register(char register_to_read); with returned value: data read parameter: "register_to_read" > Specify the register number where to read Example of implementation: char stw5098_read_register(char register_to_read) { char data_read; data_read = your_i2c_read_routine( STW5098_I2C_DEVICE_ADDR_READ, register_to_read); return data_read; }
9/82
Use of the drivers
PM0028
"stw5098_write_register" prototype
void stw5098_write_register(char register_to_write, char data_to_write); with returned value: None parameters: "register_to_write" > Specify the register number where to write "data_to_write" > The 8 bits data that you want to write Example of implementation: void stw5098_write_register(char register_to_write, char data_to_write) { your_i2c_write_routine( STW5098_I2C_DEVICE_ADDR_WRITE, register_to_write, data_to_write ); }
Entity selection before calling a function of the low level drivers:
The STw5098 contains two functional entities. The same functions can be used to configure each functional entities. To select the entity that you want to configure, you must call the function "stw5098_entity_select" before using a group of functions of the low level drivers. Its prototype is: void stw5098_entity_select(unsigned char entity); The possible values for parameter "entity" are: 0 for entity0 1 for entity1 You only need to call that function when you want to change the entity to configure. If you do not call at least once "stw5098_entity_select" before using a function from low level drivers, it is the entity 0 that is configured by default. To use this function, you must include the file: #include "stw5098_read_write_registers.h"
10/82
PM0028 Example // The communication is done with entity 0: stw5098_entity_select(0); analog_output_mixer(LEFT, ON); device_power(ON); // Now, the communication is done with entity 1: stw5098_entity_select(1); analog_output_mixer(LEFT, ON); mic_to_da_mixer(CONNECTED); device_power(ON);
Use of the drivers
Note:
"stw5098_entity_select( )" function acts on "stw5098_read_register( )" and "stw5098_write_register( )" functions by selecting the entity ID. You can modify the way how it is acting inside this two functions if needed.
STw5098 drivers package
7 files are required to use the STw5098 low level drivers: STw5098_low_level_drivers.c STw5098_low_level_drivers.h STw5098_operations.c STw5098_operations.h STw5098_read_write_registers.c STw5098_read_write_registers.h STw5098_register_values.h
11/82
Functions
PM0028
3
Note:
Functions
In all the functions below, names are case sensitive.
The prototypes of all the low level drivers functions are defined in "stw5098_low_level_drivers.h".
3.1
3.1.1
Power control
device_power
Table 1.
Prototype Description Arguments Return Value Example Register
Device_power
void STw5098_device_power(char parameter) To power up all the enabled analog and digital blocks Parameter: DEFAULT, ON, OFF none STw5098_device_power(ON) 0
3.1.2
analog_block_power
Table 2.
Prototype Description Arguments Return Value Example Register
analog_block_power
void STw5098_analog_block_power(char parameter) To be able to enable the analog blocks Parameter: DEFAULT, ON, OFF none STw5098_analog_block_power(ON) 0
12/82
PM0028
Functions
3.1.3
digital_io_voltage
Table 3.
Prototype
digital_io_voltage
void STw5098_digital_io_voltage(char parameter) To select the range of digital I/O pins voltage: 1.71V < VCCIO < VCC or 1.2V < VCCIO < 1.8V Parameter: DEFAULT, RANGE_1V71_TO_VCC, RANGE_1V2_TO_1V8 none STw5098_digital_io_voltage(RANGE_1V71_TO_VCC) 0
Description
Arguments Return Value Example Register
3.1.4
analog_supply_voltage
Table 4.
Prototype
analog_supply_voltage
void STw5098_analog_supply_voltage(char parameter) To select the range of analog supply pins voltage: 2.4 V < Vcca < 2.7 V or 2.7 V < Vcca < 3.3 V Parameter: DEFAULT , RANGE_2V4_TO_2V7, RANGE_2V7_TO_3V3 none STw5098_analog_supply_voltage(RANGE_2V4_TO_2V7) 0
Description
Arguments Return Value Example Register
13/82
Functions
PM0028
3.1.5
headset_plugin_detector
Table 5.
Prototype Description Arguments Return Value Example Register
headset_plugin_detector
void STw5098_headset_plugin_detector(char parameter) To enable the Headset Plug-in Detector Parameter: DEFAULT, ON, OFF none STw5098_headset_plugin_detector(ON) 0
3.1.6
software_reset
Table 6.
Prototype Description Arguments Return Value Example Register
software_reset
void STw5098_software_reset(void) Software reset: All registers content is reset to the default value Control Register content is left unchanged none none STw5098_software_reset( ) 30
14/82
PM0028
Functions
3.2
Analog input and mixing
These functions are related to the analog input connections, gain and attenuator settings.
3.2.1
Analog input (MIC path)
mic_amp_select
Table 7.
Prototype Description Arguments Return Value Example Register
mic_amp_select
void STw5098_mic_amp_select(char parameter) Select the input that is connected to the MIC amplifier chain Parameter: DEFAULT, MIC, AUX1, AUX2, AUX3 none STw5098_mic_amp_select(MIC) 18
mic_amp_enable_ctrl
Table 8.
Prototype Description
mic_amp_enable_ctrl
void STw5098_mic_amp_enable_ctrl(char parameter1, char parameter2) Enable or disables MIC amplifier Parameter1: BOTH, LEFT, RIGHT Parameter2: DEFAULT, OFF, ON none STw5098_mic_amp_enable_ctrl(ON) 1
Arguments
Return Value Example Register
15/82
Functions
PM0028
mic_amp_mute_ctrl
Table 9.
Prototype Description Arguments Return Value Example Comments Register
mic_amp_mute_ctrl
void STw5098_mic_amp_mute_ctrl(char parameter) Mutes or unmutes MIC amplifier Parameter: DEFAULT, MUTE, UNMUTE none STw5098_mic_amp_select(MIC) There is only one mute control for both amplifiers 18
mic_bias_ctrl
Table 10.
Prototype Description Arguments Return Value Example Register
mic_bias_ctrl
void STw5098_mic_bias_ctrl(char parameter) Enable the microphone biasing switch Parameter: DEFAULT , ON, OFF none STw5098_mic_bias_ctrl(ON) 17
mic_bias_pull_down
Table 11.
Prototype Description Arguments Return Value Example Register
mic_bias_pull_down
void STw5098_mic_bias_pull_down(char parameter) Enable the microphone biasing switch Parameter: DEFAULT, HI_Z, PULL_DOWN none STw5098_mic_bias_pull_down(HI_Z) 17
16/82
PM0028
Functions
3.2.2
Analog Gain (MIC path)
mic_preamp_gain
Table 12.
Prototype Description
mic_preamp_gain
void STw5098_mic_preamp_gain(char parameter1, char parameter2) Increases or Decreases MIC amplifier gain by one step Parameter1: BOTH, LEFT, RIGHT Parameter2: DEFAULT, PLUS, MINUS none STw5098_mic_preamp_gain(LEFT, PLUS) See datasheet, step is mostly +/- 1.5 dB, is different at end of range 3-4
Arguments
Return Value Example Comments Register
17/82
Functions
PM0028
set_mic_preamp_gain
Table 13.
Prototype Description
set_mic_preamp_gain
void STw5098_set_mic_preamp_gain(char parameter1, char parameter2) Sets the MIC amplifier gain with the given value Parameter1: BOTH, LEFT, RIGHT Parameter2 : MIC_G_0_DB MIC_G_1_5_DB MIC_G_3_DB MIC_G_4_5_DB MIC_G_6_DB MIC_G_7_5_DB MIC_G_9_DB MIC_G_10_5_DB MIC_G_12_DB MIC_G_13_5_DB MIC_G_15_DB MIC_G_16_5_DB MIC_G_18_DB none STw5098_set_mic_preamp_gain( LEFT, MIC_G_3_DB) See datasheet 3-4 Parameter2: MIC_G_19_5_DB MIC_G_21_DB MIC_G_22_5_DB MIC_G_24_DB MIC_G_25_5_DB MIC_G_27_DB MIC_G_28_5_DB MIC_G_30_DB MIC_G_31_5_DB MIC_G_33_DB MIC_G_34_5_DB MIC_G_36_DB MIC_G_37_5_DB MIC_G_39_DB
Arguments
Return Value Example Comments Register
mic_attenuator
Table 14.
Prototype Description
mic_attenuator
void STw5098_mic_attenuator(char parameter1, char parameter2) Increases or Decreases MIC attenuation by one step Parameter1: BOTH, LEFT, RIGHT Parameter2: DEFAULT, PLUS, MINUS none STw5098_mic_attenuator( LEFT, PLUS) See datasheet, step is mostly +/- 1.5 dB, is different at end of range 3-4
Arguments
Return Value Example Comments Register
18/82
PM0028
Functions
set_mic_attenuator
Table 15.
Prototype Description
set_mic_attenuator
void STw5098_set_mic_attenuator(char parameter1, char parameter2) Sets the MIC amplifier gain with the given value Parameter1: BOTH, LEFT, RIGHT Parameter2: MIC_A_0_DB MIC_A_MINUS_1_5_DB MIC_A_MINUS_3_DB MIC_A_MINUS_4_5_DB MIC_A_MINUS_6_DB MIC_A_MINUS_7_5_DB MIC_A_MINUS_9_DB MIC_A_MINUS_12_DB none STw5098_set_mic_attenuator( LEFT, MIC_A_MINUS_3_DB ) See datasheet 3-4
Arguments
Return Value Example Comments Register
3.2.3
Analog Mixing (MIC path)
mic_to_ad_mix
Table 16.
Prototype Description Arguments Return Value Example Comments Register
mic_to_ad_mix
void STw5098_mic_to_ad_mixer(char parameter) Connects MIC chain to analog to digital mixer Parameter: DEFAULT , DISCONNECTED , CONNECTED none STw5098_mic_to_ad_mixer(CONNECTED) Applies for both LEFT and RIGHT 17
19/82
Functions
PM0028
mic_to_da_mixer Table 17. mic_to_da_mixer
Prototype Description Arguments Return Value Example Comments Register void STw5098_mic_to_da_mixer(char parameter) Connects MIC chain to digital to analog mixer Parameter: DEFAULT , DISCONNECTED , CONNECTED none STw5098_mic_to_da_mixer(CONNECTED) Applies for both LEFT and RIGHT 17
3.2.4
Analog Input (LINE_IN path)
line_in_amp_select
Table 18.
Prototype Description Arguments Return Value Example Register
line_in_amp_select
void STw5098_line_in_amp_select(char parameter) Select the input that is connected to the LINE_IN amplifier Parameter: DEFAULT, LINE_IN , AUX1 , AUX2 , AUX3 none STw5098_line_in_amp_select(AUX1) 18
line_in_amp_enable_ctrl
Table 19.
Prototype Description
line_in_amp_enable_ctrl
void STw5098_line_in_amp_enable_ctrl(char parameter1, char parameter2) Enable or disables LINE_IN amplifier Parameter1: BOTH , LEFT , RIGHT
Arguments Parameter2: DEFAULT, ON, OFF Return Value Example Register none STw5098_line_in_amp_enable_ctrl( LEFT, ON) 1
20/82
PM0028
Functions
line_in_amp_mute_ctrl
Table 20.
Prototype Description Arguments Return Value Example Comments Register
line_in_amp_mute_ctrl
void STw5098_line_in_amp_mute_ctrl(char parameter) Mutes or Unmutes LINE_IN amplifier Parameter: DEFAULT, MUTE , UNMUTE none STw5098_line_in_amp_mute_ctrl(UNMUTE) There is only one mute control for both amplifiers 18
3.2.5
Analog gain (LINE_IN path)
line_in_amp_gain
Table 21.
Prototype Description
line_in_amp_gain
void STw5098_line_in_amp_gain(char parameter1, char parameter2) Increases or Decreases LINE_IN amplifier gain by one step Parameter1: BOTH , LEFT , RIGHT Parameter2: DEFAULT, PLUS , MINUS none STw5098_line_in_amp_gain(LEFT, PLUS) See datasheet, step is mostly +/- 1.5 dB, is different at end of range 5-6
Arguments
Return Value Example Comments Register
21/82
Functions
PM0028
set_line_in_amp_gain Table 22. set_line_in_amp_gain
Prototype Description void STw5098_set_line_in_amp_gain(char parameter1, char parameter2) Sets the LINE_IN amplifier gain with the given value Parameter1: BOTH , LEFT , RIGHT Parameter2: LIN_G_18_DB LIN_G_16_DB LIN_G_14_DB LIN_G_12_DB LIN_G_10_DB LIN_G_8_DB LIN_G_6_DB LIN_G_4_DB LIN_G_2_DB LIN_G_0_DB LIN_G_MINUS_2_DB LIN_G_MINUS_4_DB LIN_G_MINUS_6_DB LIN_G_MINUS_8_DB LIN_G_MINUS_10_DB LIN_G_MINUS_12_DB LIN_G_MINUS_14_DB LIN_G_MINUS_16_DB LIN_G_MINUS_18_DB LIN_G_MINUS_20_DB none STw5098_set_line_in_amp_gain( LEFT, LIN_G_18_DB) See datasheet 5-6
Arguments
Return Value Example Comments Register
22/82
PM0028
Functions
3.2.6
Analog Mixing (LINE_IN path)
line_in_to_ad_mixer
Table 23.
Prototype Description Arguments Return Value Example Comments Register
line_in_to_ad_mixer
void STw5098_line_in_to_ad_mixer(char parameter) Connects LINE_IN chain to analog to digital mixer Parameter: DEFAULT , DISCONNECTED , CONNECTED none STw5098_line_in_to_ad_mixer(CONNECTED) Applies for both LEFT and RIGHT 17
line_in_to_da_mixer
Table 24.
Prototype Description Arguments Return Value Example Comments Register
line_in_to_da_mixer
void STw5098_line_in_to_da_mixer(char parameter) Connects LINE_IN chain to digital to analog mixer Parameter: DEFAULT , DISCONNECTED , CONNECTED none STw5098_line_in_to_da_mixer(CONNECTED) Applies for both LEFT and RIGHT 17
23/82
Functions
PM0028
3.2.7
Bias
unused_analog_in_bias
Table 25.
Prototype Description Arguments Return Value Example Register
unused_analog_in_bias
void STw5098_unused_analog_in_bias(char parameter) Biases unused analog inputs Parameter: DEFAULT , HI_Z , TO_VCM none STw5098_unused_analog_in_bias(HI_Z) 18
3.3
3.3.1
Analog outputs
Line out management
line_out_enable_ctrl
Table 26.
Prototype Description
line_out_enable_ctrl
void STw5098_line_out_enable_ctrl(char parameter1, char parameter2) Enables the LINE_OUT driver Parameter1: BOTH , LEFT , RIGHT Parameter2: DEFAULT, ON, OFF none STw5098_line_out_enable_ctrl( LEFT, ON) 2
Arguments
Return Value Example Register
24/82
PM0028
Functions
line_out_mute_ctrl
Table 27.
Prototype Description Arguments Return Value Example Comments Register
line_out_mute_ctrl
void STw5098_line_out_mute_ctrl(char parameter) Mutes or unmutes LINE_OUT driver Parameter: DEFAULT, MUTE , UNMUTE none STw5098_line_out_mute_ctrl(UNMUTE) There is only one mute control for LINE_OUT driver 19
line_out_input_select
Table 28.
Prototype Description Arguments Return Value Example Comments Register
line_out_input_select
void STw5098_line_out_input_select(char parameter) Determine connections to LINE_OUT drivers Parameter: DEFAULT, MIXERS , MICROPHONE none STw5098_line_out_input_select(MICROPHONE) Direct analog connection ... 17
line_out_gain
Table 29.
Prototype Description Arguments Return Value Example Comments Register
line_out_gain
void STw5098_line_out_gain(char parameter) Determine mode for LINE_OUT drivers Parameter: DEFAULT , PLUS , MINUS none STw5098_line_out_gain(PLUS) See datasheet for stepping ... 7
25/82
Functions
PM0028
set_line_out_gain
Table 30.
Prototype Description
set_line_out_gain
void STw5098_set_line_out_gain(char parameter) Determine mode for LINE_OUT drivers Parameter: LOG_MINUS_18_DB LOG_MINUS_15_DB LOG_MINUS_12_DB LOG_MINUS_9_DB LOG_MINUS_6_DB LOG_MINUS_3_DB LOG_0_DB none STw5098_set_line_out_gain(LOG_MINUS_18_DB) See datasheet for stepping ... 7
Arguments
Return Value Example Comments Register
3.3.2
Management of Headphone
headphone_enable_ctrl
Table 31.
Prototype Description
headphone_enable_ctrl
void STw5098_headphone_enable_ctrl(char parameter1, char parameter2) Enables the headphone drivers Parameter1: BOTH , LEFT , RIGHT Parameter2: DEFAULT, ON , OFF none STw5098_headphone_enable_ctrl(LEFT, ON) 2
Arguments
Return Value Example Register
26/82
PM0028
Functions
headphone_vcm_generator
Table 32.
Prototype Description Arguments Return Value Example Register
headphone_vcm_generator
void STw5098_headphone_ref_voltage_generator(char parameter) Enable the headphone drivers Parameter: DEFAULT, ON, OFF none STw5098_headphone_ref_voltage_generator(ON) 2
headphone_mute_ctrl
Table 33.
Prototype Description Arguments Return Value Example Comments Register
headphone_mute_ctrl
void STw5098_headphone_mute_ctrl(char parameter) Mutes or unmutes LINE_OUT driver Parameter: DEFAULT, MUTE , UNMUTE none STw5098_headphone_mute_ctrl(UNMUTE) There is only one mute control for headphone drivers 19
27/82
Functions
PM0028
headphone_gain
Table 34.
Prototype Description
headphone_gain
void STw5098_headphone_gain(char parameter1, char parameter2) Increases or Decreases headphone driver gain by one step Parameter1: BOTH , LEFT , RIGHT
Arguments Parameter2: DEFAULT , PLUS , MINUS Return Value Example Comments Register none STw5098_headphone_gain(LEFT, PLUS) See datasheet, step is mostly +/- 1.5 dB, is different at end of range 8-9
28/82
PM0028
Functions
set_headphone_gain
Table 35.
Prototype Description
set_headphone_gain
void STw5098_set_headphone_gain(char parameter1, char parameter2) Sets headphone driver gain value Parameter1: BOTH , LEFT , RIGHT Parameter2: HP_G_0_DB HP_G_MINUS_2_DB HP_G_MINUS_4_DB HP_G_MINUS_6_DB HP_G_MINUS_8_DB HP_G_MINUS_10_DB HP_G_MINUS_12_DB HP_G_MINUS_14_DB HP_G_MINUS_16_DB HP_G_MINUS_18_DB HP_G_MINUS_20_DB HP_G_MINUS_22_DB HP_G_MINUS_24_DB HP_G_MINUS_26_DB HP_G_MINUS_28_DB HP_G_MINUS_30_DB HP_G_MINUS_32_DB HP_G_MINUS_34_DB HP_G_MINUS_36_DB HP_G_MINUS_38_DB HP_G_MINUS_40_DB none STw5098_set_headphone_gain(LEFT, HP_G_MINUS_2_DB ) See datasheet 8-9
Arguments
Return Value Example Comments Register
29/82
Functions
PM0028
set_common_mode_voltage_level
Table 36.
Prototype Description Arguments Return Value Example Comments Register
set_common_mode_voltage_level
void STw5098_set_common_mode_voltage_level(char parameter) Sets value of common mode voltage driver for headphones Parameter: DEFAULT, VOLT_1_20, VOLT_1_35, VOLT_1_50, VOLT_1_65 none STw5098_set_common_mode_voltage_level(VOLT_1_35) See datasheet 19
3.3.3
Loudspeaker management
loudspeaker_enable_ctrl
Table 37.
Prototype Description Arguments Return Value Example Register
loudspeaker_enable_ctrl
void STw5098_loudspeaker_enable_ctrl(char parameter) Enables the loudspeaker driver Parameter: DEFAULT, ON, OFF none STw5098_loudspeaker_enable_ctrl(ON) 2
30/82
PM0028
Functions
loudspeaker_limit_ctrl
Table 38.
Prototype Description Arguments Return Value Example Register
loudspeaker_limit_ctrl
void STw5098_loudspeaker_limit_ctrl(char parameter) Enables the loudspeaker power limiter Parameter: DEFAULT, UNLIMITED , LIMITED none STw5098_loudspeaker_limit_ctrl(UNLIMITED) 19
loudspeaker_input_select
Table 39.
Prototype Description Arguments Return Value Example Comments Register
loudspeaker_input_select
void STw5098_loudspeaker_input_select(char parameter) Sets loudspeaker input Parameter: DEFAULT, MUTE , LEFT , RIGHT , MONO none STw5098_loudspeaker_input_select(LEFT) MONO correspond to (left + right)/2 19
loudspeaker_gain
Table 40.
Prototype Description Arguments Return Value Example Comments Register
loudspeaker_gain
void STw5098_loudspeaker_gain(char parameter) Sets loudspeaker input Parameter: DEFAULT, PLUS , MINUS none STw5098_loudspeaker_gain(PLUS) See datasheet for stepping 7
31/82
Functions
PM0028
set_loudspeaker_gain
Table 41.
Prototype Description
set_loudspeaker_gain
void STw5098_set_loudspeaker_gain(char parameter) Sets loudspeaker input Parameter: LSG_6_DB LSG_4_DB LSG_2_DB LSG_0_DB LSG_MINUS_2_DB LSG_MINUS_4_DB LSG_MINUS_6_DB LSG_MINUS_8_DB LSG_MINUS_10_DB LSG_MINUS_12_DB LSG_MINUS_14_DB LSG_MINUS_16_DB LSG_MINUS_18_DB LSG_MINUS_20_DB LSG_MINUS_22_DB LSG_MINUS_24_DB none STw5098_set_loudspeaker_gain(LSG_4_DB) See datasheet 7
Arguments
Return Value Example Comments Register
32/82
PM0028
Functions
3.4
3.4.1
Analog to digital and digital to analog
ad_conversion
Table 42.
Prototype Description
ad_conversion
void STw5098_ad_conversion(char parameter1, char parameter2) Enable the AD converter Parameter1: BOTH , LEFT , RIGHT
Arguments Parameter2: DEFAULT , ON , OFF Return Value Example Register none STw5098_ad_conversion(LEFT, ON) 1
da_conversion
Table 43.
Prototype Description
da_conversion
void STw5098_da_conversion(char parameter1, char parameter2) Enable the DA converter Parameter1: BOTH , LEFT , RIGHT
Arguments Parameter2: DEFAULT , ON , OFF Return Value Example Register none STw5098_da_conversion(LEFT, ON) 1
33/82
Functions
PM0028
3.4.2
da_to_mixer
Table 44.
Prototype Description Arguments Return Value Example Register
da_to_mixer
void STw5098_da_to_mixer(char parameter) connect line in preamplifiers to mixers Parameter: DEFAULT, DISCONNECTED, CONNECTED none STw5098_da_to_mixer(CONNECTED) 17
3.4.3
analog_output_mixer
Table 45.
Prototype Description
analog_output_mixer
void STw5098_analog_output_mixer(char parameter1, char parameter2) Enable analog output mixer Parameter1: BOTH , LEFT , RIGHT
Arguments Parameter2: DEFAULT , ON , OFF Return Value Example Register none STw5098_analog_output_mixer(LEFT, ON) 2
34/82
PM0028
Functions
3.5
3.5.1
Audio interface
AD audio interface
ad_bit_number
Table 46.
Prototype Description Arguments Return Value Example Register
ad_bit_number
void STw5098_ad_bit_number(char parameter) AD interface word length Parameter: DEFAULT, BIT_16, BIT_18, BIT_20, BIT_24, BIT_32 none STw5098_ad_bit_number(BIT_16) 27
ad_audio_interface_format
Table 47.
Prototype Description Arguments Return Value Example Register
ad_audio_interface_format
void STw5098_ad_audio_interface_format(char parameter) AD audio interface format selection Parameter: DEFAULT, DELAYED, LEFT_ALIGNED, RIGHT_ALIGNED, DSP, SPI,PCM none STw5098_ad_audio_interface_format(DELAYED) 27
ad_interface_delayed_or_polarity
Table 48.
Prototype
ad_interface_delayed_or_polarity
void STw5098_ad_interface_delayed_or_polarity(char parameter) For DSP and PCM formats in AD interface: set delayed format. For delayed, left-aligned, right-aligned and SPI formats in AD interface: Inver t AD sync pin (AD_SYNC) polarity DSP and PCM formats in AD interface Parameter: DEFAULT, NO_DELAYED, DELAYED Delayed, left-aligned, right-aligned and SPI formats in AD interface Parameter: DEFAULT, NO_INVERTED, INVERTED STw5098_ad_interface_delayed_or_polarity(DELAYED) 28
Description
Arguments Return Value Example Register
35/82
Functions
PM0028
ad_channel_number_spi
Table 49.
Prototype Description Arguments Return Value Example Register
ad_channel_number_spl
void STw5098_ad_channel_number_spi(char parameter) Send one (left) or two channels (alternated, left first) for AD interface in SPI mode Parameter: DEFAULT, ONE, TWO none STw5098_ad_channel_number_spi(ONE) 27
ad_master_slave_mode
Table 50.
Prototype Description Arguments Return Value Example Register
ad_master_slave_mode
void STw5098_ad_master_slave_mode(char parameter) Select slave mode (high impedance input) or master mode (low impedance output) for AD audio interface Parameter: DEFAULT, SLAVE, MASTER none STw5098_ad_master_slave_mode(MASTER) 25
ad_data_pin_control
Table 51.
Prototype Description Arguments Return Value Example Register
ad_data_pin_control
void STw5098_ad_data_pin_control(char parameter) Force AD data pin (AD_DATA) to 0 or in high impedance state when no data is available Parameter: DEFAULT, TO_ZERO, TO_HIGH_Z none STw5098_ad_data_pin_control(TO_ZERO) 28
ad_clock_pin_polarity
Table 52.
Prototype Description Arguments
ad_clock_pin_polarity
void STw5098_ad_clock_pin_polarity(char parameter) Inver t AD Bit clock pin (AD_CK) polarity Parameter: DEFAULT, INVERTED, NO_INVERTED
36/82
PM0028 Table 52. ad_clock_pin_polarity
none STw5098_ad_clock_pin_polarity(NO_INVERTED) 28
Functions
Return Value Example Register
37/82
Functions
PM0028
3.5.2
DA audio interface
da_bit_number
Table 53.
Prototype Description Arguments Return Value Example Register
da_bit_number
void STw5098_da_bit_number(char parameter) DA interface word length Parameter: DEFAULT, BIT_16, BIT_18, BIT_20, BIT_24,BIT_32 none STw5098_da_bit_number(BIT_16) 26
da_audio_interface_format
Table 54.
Prototype Description Arguments Return Value Example Register
da_audio_interface_format
void STw5098_da_audio_interface_format(char parameter) DA audio interface format selection Parameter: DEFAULT, DELAYED, LEFT_ALIGNED, RIGHT_ALIGNED, DSP, SPI, PCM none STw5098_da_audio_interface_format(DELAYED) 26
38/82
PM0028
Functions
da_interface_delayed_or_polarity
Table 55.
Prototype
da_interface_delayed_or_polarity
void STw5098_da_interface_delayed_or_polarity(char parameter) For DSP and PCM formats in DA interface: Set delayed format. For delayed, left-aligned, right-aligned and SPI formats in DA interface: Invert DA sync pin (DA_SYNC) polarity DSP and PCM formats in DA interface Parameter: DEFAULT, NO_DELAYED, DELAYED
Description
Arguments Delayed, left-aligned, right-aligned and SPI formats in DA interface Parameter: DEFAULT, NO_INVERTED, INVERTED Return Value Example Register none STw5098_da_interface_delayed_or_polarity(DELAYED) 28
da_channel_number_spi
Table 56.
Prototype Description Arguments Return Value Example Register
da_channel_number_spl
void STw5098_da_channel_number_spi(char parameter) Send one (left) or two channels (alternated, left first) for DA interface in SPI mode Parameter: DEFAULT, ONE, TWO none STw5098_da_channel_number_spi(ONE) 26
da_master_slave_mode
Table 57.
Prototype Description Arguments Return Value Example Register
da_master_slave_mode
void STw5098_da_master_slave_mode(char parameter) Select slave mode (high impedance input) or master mode (low impedance output) for DA audio interface Parameter: DEFAULT, SLAVE, MASTER none STw5098_da_master_slave_mode(MASTER) 22
39/82
Functions
PM0028
da_clock_pin_polarity
Table 58.
Prototype Description Arguments Return Value Example Register
da_clock_pin_polarity
void STw5098_da_clock_pin_polarity(char parameter) Inver t DA Bit clock pin (DA_CK) polarity Parameter: DEFAULT, INVERTED, NO_INVERTED none STw5098_da_clock_pin_polarity(NO_INVERTED) 28
40/82
PM0028
Functions
3.6
3.6.1
Automatic gain control
agc_act_on_line_in_gain
Table 59.
Prototype Description Arguments Return Value Example Register
agc_act_on_line_in_gain
void STw5098_agc_act_on_line_in_gain(char parameter) Act on line in gain with AGC control on AD path Parameter: DEFAULT, ON, OFF none STw5098_agc_act_on_line_in_gain(ON) 35
agc_act_on_mic_gain
Table 60.
Prototype Description Arguments Return Value Example Register
agc_act_on_mic_gain
void STw5098_agc_act_on_mic_gain(char parameter) Act on Mic. gain with AGC control on AD path Parameter: DEFAULT, ON, OFF none STw5098_agc_act_on_mic_gain(OFF) 35
41/82
Functions
PM0028
agc_action_range
Table 61.
Prototype Description Arguments Return Value Example Register
agc_action_range
void STw5098_agc_action_range(char parameter) Select AGC action range from -10.5 dB to +10.5 dB or from -21.0 dB to +21.0 dB Parameter: DEFAULT, MINUS_PLUS_10_5_DB, MINUS_PLUS_21_DB none STw5098_agc_action_range(MINUS_PLUS_10_5_DB) 35
agc_ouput_level
Table 62.
Prototype Description Arguments Return Value Example Register
agc_output_level
void STw5098_agc_ouput_level(char parameter) AGC requested output level Parameter: DEFAULT, PLUS, MINUS none STw5098_agc_ouput_level(PLUS) 35
42/82
PM0028
Functions
set_agc_ouput_level
Table 63.
Prototype Description
set_agc_output_level
void STw5098_set_agc_ouput_level(char parameter) AGC requested output level Parameter: AGCLEV_MINUS_30_DB AGCLEV_MINUS_27_DB AGCLEV_MINUS_24_DB AGCLEV_MINUS_21_DB AGCLEV_MINUS_18_DB AGCLEV_MINUS_15_DB AGCLEV_MINUS_12_DB AGCLEV_MINUS_9_DB AGCLEV_MINUS_6_DB none STw5098_set_agc_ouput_level(AGCLEV_MINUS_27_DB) 35
Arguments
Return Value Example Register
agc_attack_time
Table 64.
Prototype Description Arguments Return Value Example Register
agc_attack_time
void STw5098_agc_attack_time(char parameter) AGC attack time constant; FS=AD data rate Parameter: DEFAULT, PLUS, MINUS none STw5098_agc_attack_time(PLUS) 34
43/82
Functions
PM0028
set_agc_attack_time
Table 65.
Prototype Description
set_agc_attack_time
void STw5098_set_agc_attack_time(char parameter) AGC Attack Time Constant; FS=AD data rate For audio filter in AD path Parameter: AGCATT_AUDIO_4096 AGCATT_AUDIO_2048 AGCATT_AUDIO_1365 AGCATT_AUDIO_1024 AGCATT_AUDIO_683 AGCATT_AUDIO_512 AGCATT_AUDIO_341 AGCATT_AUDIO_256 AGCATT_AUDIO_171 AGCATT_AUDIO_128 AGCATT_AUDIO_85 AGCATT_AUDIO_64 AGCATT_AUDIO_43 AGCATT_AUDIO_32
Arguments For voice filter in AD path Parameter: AGCATT_VOICE_8192 AGCATT_VOICE_4096 AGCATT_VOICE_2731 AGCATT_VOICE_2048 AGCATT_VOICE_1365 AGCATT_VOICE_1024 AGCATT_VOICE_683 AGCATT_VOICE_512 AGCATT_VOICE_341 AGCATT_VOICE_256 AGCATT_VOICE_171 AGCATT_VOICE_128 AGCATT_VOICE_85 AGCATT_VOICE_64 Return Value Example Register none STw5098_set_agc_attack_time(AGCATT_AUDIO_2048) 34
44/82
PM0028
Functions
agc_decay_time
Table 66.
Prototype Description Arguments Return Value Example Register
agc_decay_time
void STw5098_agc_decay_time(char parameter) AGC decay time constant; FS=AD data rate Parameter: DEFAULT, PLUS, MINUS none STw5098_agc_decay_time(PLUS) 34
45/82
Functions
PM0028
set_agc_decay_time
Table 67.
Prototype Description
set_agc_decay_time
void STw5098_set_agc_decay_time(char parameter) AGC Decay Time Constant; FS=AD data rate For audio filter in AD path Parameter: AGCDEC_AUDIO_65536 AGCDEC_AUDIO_32768 AGCDEC_AUDIO_21845 AGCDEC_AUDIO_16384 AGCDEC_AUDIO_10923 AGCDEC_AUDIO_8192 AGCDEC_AUDIO_5461 AGCDEC_AUDIO_4096 AGCDEC_AUDIO_2731 AGCDEC_AUDIO_2048 AGCDEC_AUDIO_1365 AGCDEC_AUDIO_1024 AGCDEC_AUDIO_683 AGCDEC_AUDIO_512 AGCDEC_AUDIO_341 AGCDEC_AUDIO_256
Arguments For voice filter in AD path Parameter: AGCDEC_VOICE_131072 AGCDEC_VOICE_65536 AGCDEC_VOICE_43691 AGCDEC_VOICE_32768 AGCDEC_VOICE_21845 AGCDEC_VOICE_16384 AGCDEC_VOICE_10923 AGCDEC_VOICE_8192 AGCDEC_VOICE_5461 AGCDEC_VOICE_4096 AGCDEC_VOICE_2731 AGCDEC_VOICE_2048 AGCDEC_VOICE_1365 AGCDEC_VOICE_1024 AGCDEC_VOICE_683 AGCDEC_VOICE_512 Return Value Example Register none STw5098_set_agc_decay_time(AGCDEC_AUDIO_32768) 34
46/82
PM0028
Functions
3.7
3.7.1
Control interface and interrupt control
Control Interface SPI out mode
spi_output_select
Table 68.
Prototype Description Arguments Return Value Example Comments Register
spl_output_select
void STw5098_spi_output_select(char parameter) Out pin selection for SPI control interface Parameter: DEFAULT, NONE, IRQ_PIN, DA_OCK_PIN, AD_OCK_PIN none STw5098_spi_output_select(DA_OCK_PIN) When NONE (No output) is selected, control registers cannot be read in SPI mode 33
spi_output_control
Table 69.
Prototype Description Arguments Return Value Example Register
spl_output_control
void STw5098_spi_output_control(char parameter) Set SPI control interface out pin to zero or to high impedance state when inactive Parameter: DEFAULT, TO_ZERO, TO_HIGH_Z none STw5098_spi_output_control(TO_ZERO) 33
47/82
Functions
PM0028
3.7.2
Interrupt control
irq_source_select
Table 70.
Prototype Description
irq_source_select
void STw5098_irq_source_select(char parameter1, char parameter2) Select a status or an event to see at IRQ output Parameter1: ALL VLSH_STATUS PUSHB_STATUS HSDET_STATUS VLSH_EVENT PUSHB_EVENT HSDET_EVENT OVF_EVENT POR_EVENT Parameter2: DEFAULT, ON, OFF none STw5098_irq_source_select(ALL, OFF) STw5098_irq_source_select(POR_EVENT, ON) The parameter "ALL" includes all events and status 31
Arguments
Return Value Example Comments Register
48/82
PM0028
Functions
get_irq_status
Table 71.
Prototype Description
get_lrq_status
unsigned char STw5098_get_irq_status(char parameter) To get IRQ status Parameter: ALL VCCLS HEADSET_BUTTON HEADSET_CONNECTOR VLSH_BIT HEADSET_BUTTON_STATUS HEADSET_CONNECTOR_STATUS AUDIO_DATA_OVERFLOW DEVICE_RESET Return the value of IRQ status: 0 or 1 If the parameter ALL is select, it returns all the content of the register CR32 STw5098_get_irq_status(HEADSET_BUTTON) See datasheet for the meaning of each IRQ status. The parameter "ALL" includes all IRQ status of this register. 32
Arguments
Return Value Example Comments Register
irq_pin_behaviour
Table 72.
Prototype Description Arguments Return Value Example Register
lrq_pin_behaviour
void STw5098_irq_pin_behaviour(char parameter) Set IRQ interrupt request pin to pull down or to CMOS (active low) Parameter: DEFAULT, PULL_DOWN, CMOS none STw5098_irq_pin_behaviour(PULL_DOWN) 33
49/82
Functions
PM0028
get_overflow_status
Table 73.
Prototype Description Arguments Return Value Example Register
get_overflow_status
unsigned char STw5098_get_overflow_status(char parameter) Specify if an overflow (saturation) occurred in AD or DA path Parameter: DA, AD Return 0 if no overflow occurred Return 1 if an overflow occurred STw5098_get_overflow_status(DA) 33
3.8
3.8.1
DSP functions
DSP functions for analog to digital
digital_ad_gain
Table 74.
Prototype Description
digital_ad_gain
void STw5098_digital_ad_gain(char parameter1, char parameter2) Set left and right channels ADC digital gain Parameter1: BOTH, LEFT, RIGHT
Arguments Parameter2: DEFAULT, PLUS, MINUS Return Value Example Register none STw5098_digital_ad_gain(LEFT, PLUS) 12 - 13
50/82
PM0028
Functions
set_digital_ad_gain
Table 75.
Prototype Description
set_digital_ad_gain
void STw5098_set_digital_ad_gain(char parameter1, char parameter2) Set left and right channels ADC digital gain Parameter1: BOTH, LEFT, RIGHT Parameter2: ADC_G_8_DB ADC_G_7_DB ADC_G_6_DB ADC_G_5_DB ADC_G_4_DB ADC_G_3_DB ADC_G_2_DB ADC_G_1_DB ADC_G_0_DB ADC_G_MINUS_1_DB ADC_G_MINUS_2_DB ADC_G_MINUS_3_DB ADC_G_MINUS_4_DB ADC_G_MINUS_5_DB ADC_G_MINUS_6_DB ADC_G_MINUS_7_DB ADC_G_MINUS_8_DB ADC_G_MINUS_9_DB ADC_G_MINUS_10_DB ADC_G_MINUS_11_DB none STw5098_set_digital_ad_gain(LEFT, ADC_G_MINUS_3_DB) 12 - 13 Parameter2 (continued): ADC_G_MINUS_12_DB ADC_G_MINUS_14_DB ADC_G_MINUS_16_DB ADC_G_MINUS_18_DB ADC_G_MINUS_20_DB ADC_G_MINUS_22_DB ADC_G_MINUS_24_DB ADC_G_MINUS_26_DB ADC_G_MINUS_28_DB ADC_G_MINUS_30_DB ADC_G_MINUS_33_DB ADC_G_MINUS_36_DB ADC_G_MINUS_39_DB ADC_G_MINUS_42_DB ADC_G_MINUS_45_DB ADC_G_MINUS_48_DB ADC_G_MINUS_51_DB ADC_G_MINUS_57_DB ADC_G_MINUS_INFINITE_DB
Arguments
Return Value Example Register
51/82
Functions
PM0028
ad_channel_swap
Table 76.
Prototype Description Arguments Return Value Example Register
ad_channel_swap
void STw5098_ad_channel_swap(char parameter) Exchange AD left and right channels (before DSP) Parameter: DEFAULT, NO_SWAP, SWAP none STw5098_ad_channel_swap(SWAP) 27
ad_voice_high_pass_filter
Table 77.
Prototype Description Arguments Return Value Example Register
ad_voice_high_pass_filter
void STw5098_ad_voice_high_pass_filter(char parameter) To enable AD path High pass voice TX filter (300 Hz @ 8 kHz rate) Parameter: DEFAULT, ON, OFF none STw5098_ad_voice_high_pass_filter(ON) 29
52/82
PM0028
Functions
ad_audio_dc_filter
Table 78.
Prototype Description Arguments Return Value Example Register
ad_audio_dc_filter
void STw5098_ad_audio_dc_filter(char parameter) To enable AD path audio DC filter Parameter: DEFAULT, ON, OFF none STw5098_ad_audio_dc_filter(ON) 29
ad_sample_rate_range
Table 79.
Prototype Description Arguments Return Value Example Register
ad_sample_rate_range
void STw5098_ad_sample_rate_range(char parameter) To select AD path data rate range 8 kHz to 48 kHz or range 88 kHz to 96 kHz Parameter: DEFAULT, RANGE_8_TO_48, RANGE_88_TO_96 none STw5098_ad_sample_rate_range(RANGE_8_TO_48) 29
ad_filter
Table 80.
Prototype Description Arguments Return Value Example Register
ad_filter
void STw5098_ad_filter(char parameter) To enable AD path audio filters or voice TX filter Parameter: DEFAULT, AUDIO, VOICE none STw5098_ad_filter(AUDIO) 29
53/82
Functions
PM0028
ad_to_da_sidetone
Table 81.
Prototype Description Arguments Return Value Example Register
ad_to_da_sidetone
void STw5098_ad_to_da_sidetone(char parameter) Left and right channel line out drivers gain Parameter: DEFAULT, PLUS, MINUS none STw5098_ad_to_da_sidetone(PLUS) 16
set_ad_to_da_sidetone
Table 82.
Prototype Description
set_ad_to_da_sidetone
void STw5098_set_ad_to_da_sidetone(char parameter) Left and right channel line out drivers gain Parameter: AD2DAG_MIXING_DISABLED AD2DAG_MINUS_1_DB AD2DAG_MINUS_2_DB AD2DAG_MINUS_3_DB AD2DAG_MINUS_4_DB AD2DAG_MINUS_5_DB AD2DAG_MINUS_6_DB AD2DAG_MINUS_7_DB AD2DAG_MINUS_8_DB AD2DAG_MINUS_9_DB AD2DAG_MINUS_10_DB AD2DAG_MINUS_11_DB AD2DAG_MINUS_12_DB AD2DAG_MINUS_13_DB AD2DAG_MINUS_14_DB AD2DAG_MINUS_15_DB AD2DAG_MINUS_16_DB AD2DAG_MINUS_17_DB AD2DAG_MINUS_18_DB AD2DAG_MINUS_19_DB AD2DAG_MINUS_20_DB Parameter: AD2DAG_MINUS_21_DB AD2DAG_MINUS_22_DB AD2DAG_MINUS_23_DB AD2DAG_MINUS_24_DB AD2DAG_MINUS_25_DB AD2DAG_MINUS_26_DB AD2DAG_MINUS_27_DB AD2DAG_MINUS_28_DB AD2DAG_MINUS_29_DB AD2DAG_MINUS_30_DB AD2DAG_MINUS_31_DB AD2DAG_MINUS_32_DB AD2DAG_MINUS_33_DB AD2DAG_MINUS_34_DB AD2DAG_MINUS_35_DB AD2DAG_MINUS_36_DB AD2DAG_MINUS_37_DB AD2DAG_MINUS_38_DB AD2DAG_MINUS_39_DB AD2DAG_MINUS_40_DB AD2DAG_MINUS_41_DB AD2DAG_MINUS_42_DB
Arguments
Return Value Example Register
none STw5098_set_ad_to_da_sidetone(AD2DAG_MINUS_1_DB) 16
54/82
PM0028
Functions
ad_mono_stereo
Table 83.
Prototype Description Arguments Return Value Example Comments Register
ad_mono_stereo
void STw5098_ad_mono_stereo(char parameter) Select mono or stereo mode for ad path Parameter: DEFAULT, STEREO, MONO none STw5098_ad_mono_stereo(STEREO) In mono mode: (L+R)/2 from ADC is sent to both channels in the audio interface 28
3.8.2
DSP functions for digital to analog
da_to_ad_mixing
Table 84.
Prototype Description Arguments Return Value Example Register
da_to_ad_mixing
void STw5098_da_to_ad_mixing(char parameter) Left and right channel line out drivers gain Parameter: DEFAULT, PLUS, MINUS none STw5098_da_to_ad_mixing(PLUS) 15
55/82
Functions
PM0028
set_da_to_ad_mixing
Table 85.
Prototype Description
set_da_to_ad_mixing
void STw5098_set_da_to_ad_mixing(char parameter) Left and right channel line out drivers gain Parameter: DA2ADG_MIXING_DISABLED DA2ADG_2_DB DA2ADG_0_DB DA2ADG_MINUS_2_DB DA2ADG_MINUS_4_DB DA2ADG_MINUS_6_DB DA2ADG_MINUS_8_DB DA2ADG_MINUS_10_DB DA2ADG_MINUS_12_DB DA2ADG_MINUS_14_DB DA2ADG_MINUS_16_DB DA2ADG_MINUS_18_DB none STw5098_set_da_to_ad_mixing(DA2ADG_MINUS_2_DB) 15 Parameter: DA2ADG_MINUS_20_DB DA2ADG_MINUS_22_DB DA2ADG_MINUS_24_DB DA2ADG_MINUS_26_DB DA2ADG_MINUS_28_DB DA2ADG_MINUS_30_DB DA2ADG_MINUS_32_DB DA2ADG_MINUS_34_DB DA2ADG_MINUS_36_DB DA2ADG_MINUS_38_DB DA2ADG_MINUS_40_DB
Arguments
Return Value Example Register
da_treble
Table 86.
Prototype Description Arguments Return Value Example Register
da_treble
void STw5098_da_treble(char parameter) Treble control in D/A path Parameter: DEFAULT, PLUS, MINUS none STw5098_da_treble 14
56/82
PM0028
Functions
set_da_treble
Table 87.
Prototype Description
set_da_treble
void STw5098_set_da_treble(char parameter) Treble control in D/A path Parameter: TREBLE_6_DB TREBLE_4_DB TREBLE_2_DB TREBLE_0_DB TREBLE_MINUS_2_DB TREBLE_MINUS_4_DB TREBLE_MINUS_6_DB TREBLE_DEEMPHASIS_FILTER none STw5098_set_da_treble(TREBLE_2_DB) 14
Arguments
Return Value Example Register
da_bass
Table 88.
Prototype Description Arguments Return Value Example Register
da_bass
void STw5098_da_bass(char parameter) Bass control in D/A path Parameter: DEFAULT, PLUS, MINUS none STw5098_da_bass(PLUS) 14
57/82
Functions
PM0028
set_da_bass
Table 89.
Prototype Description
set_da_bass
void STw5098_set_da_bass(char parameter) Bass Control in D/A path Parameter: BASS_12_5_DB BASS_10_DB BASS_7_5_DB BASS_5_DB BASS_2_5_DB BASS_0_DB BASS_MINUS_2_5_DB BASS_MINUS_5_DB BASS_MINUS_7_5_DB BASS_MINUS_10_DB BASS_MINUS_12_5_DB none STw5098_set_da_bass(BASS_10_DB) 14
Arguments
Return Value Example Register
digital_da_gain
Table 90.
Prototype Description Arguments Return Value Example Register
digital_da_gain
void STw5098_digital_da_gain(char parameter1, char parameter2) Left and right channels ADC digital gain Parameter1: BOTH , LEFT , RIGHT Parameter2: DEFAULT, PLUS , MINUS none STw5098_digital_da_gain(LEFT, PLUS) 10 - 11
58/82
PM0028
Functions
set_digital_da_gain
Table 91.
Prototype Description
set_digital_da_gain
void STw5098_set_digital_da_gain(char parameter1, char parameter2) Left and right channels ADC digital gain Parameter1 : BOTH , LEFT , RIGHT Parameter2 : DAC_G_0_DB DAC_G_MINUS_1_DB DAC_G_MINUS_2_DB DAC_G_MINUS_3_DB DAC_G_MINUS_4_DB DAC_G_MINUS_5_DB DAC_G_MINUS_6_DB DAC_G_MINUS_7_DB DAC_G_MINUS_8_DB DAC_G_MINUS_9_DB DAC_G_MINUS_10_DB DAC_G_MINUS_11_DB DAC_G_MINUS_12_DB DAC_G_MINUS_13_DB DAC_G_MINUS_14_DB DAC_G_MINUS_15_DB DAC_G_MINUS_16_DB DAC_G_MINUS_17_DB DAC_G_MINUS_18_DB none STw5098_set_digital_da_gain(DAC_G_MINUS_2_DB) 10 - 11
Arguments
Parameter2 : DAC_G_MINUS_20_DB DAC_G_MINUS_22_DB DAC_G_MINUS_24_DB DAC_G_MINUS_26_DB DAC_G_MINUS_28_DB DAC_G_MINUS_30_DB DAC_G_MINUS_32_DB DAC_G_MINUS_34_DB DAC_G_MINUS_36_DB DAC_G_MINUS_38_DB DAC_G_MINUS_41_DB DAC_G_MINUS_44_DB DAC_G_MINUS_47_DB DAC_G_MINUS_50_DB DAC_G_MINUS_53_DB DAC_G_MINUS_56_DB DAC_G_MINUS_59_DB DAC_G_MINUS_65_DB DAC_G_MINUS_INFINITE_DB
Return Value Example Register
da_dynamic_compression
Table 92.
Prototype Description Arguments Return Value Example Register
da_dynamic_compression
void STw5098_da_dynamic_compression(char parameter) To enable audio dynamic compression in D/A path Parameter: DEFAULT, ON, OFF none STw5098_da_dynamic_compression(ON) 14
59/82
Functions
PM0028
da_channel_swap
Table 93.
Prototype Description Arguments Return Value Example Register
da_channel_swap
void STw5098_da_channel_swap(char parameter) To exchange DA left and right channels (after audio interface) Parameter: DEFAULT, NO_SWAP, SWAP none STw5098_da_channel_swap(NO_SWAP) 26
da_mono_stereo
Table 94.
Prototype Description Arguments Return Value Example Comments Register
da_mono_stereo
void STw5098_da_mono_stereo(char parameter) Select mono or stereo mode for da path Parameter: DEFAULT, STEREO, MONO none STw5098_da_mono_stereo(STEREO) In mono mode: (L+R)/2 audio interface is used on both DAC channels 28
da_voice_high_pass_filter
Table 95.
Prototype Description Arguments Return Value Example Register
da_voice_high_pass_filter
void STw5098_da_voice_high_pass_filter(char parameter) To enable DA path high pass voice RX filter (300 Hz @ 8 kHz rate) Parameter: DEFAULT, ON, OFF none STw5098_da_voice_high_pass_filter(ON) 29
60/82
PM0028
Functions
da_sample_rate_range
Table 96.
Prototype Description Arguments Return Value Example Register
da_sample_rate_range
void STw5098_da_sample_rate_range(char parameter) To select AD path data rate range 8 kHz to 48 kHz or range 88 kHz to 96 kHz Parameter: DEFAULT, RANGE_8_TO_48, RANGE_88_TO_96 none STw5098_da_sample_rate_range(RANGE_8_TO_48) 29
da_filter
Table 97.
Prototype Description Arguments Return Value Example Register
da_filter
void STw5098_da_filter(char parameter) To enable DA path audio filters or voice RX filter Parameter: DEFAULT, AUDIO, VOICE none STw5098_da_filter(AUDIO) 29
61/82
Functions
PM0028
3.9
3.9.1
PLL (Phase-Locked Loop) and CLOCK CONTROL
master_clock_frequency_range
Table 98.
Prototype Description
master_clock_frequency_range
void STw5098_master_clock_frequency_range(char parameter) Select the Master Clock Frequency (AMCK) range Parameter: DEFAULT RANGE_4_TO_6 RANGE_6_TO_8 RANGE_8_TO_12 RANGE_12_TO_16 RANGE_16_TO_24 RANGE_24_TO_32 none STw5098_master_clock_frequency_range(RANGE_4_TO_6) 30
Arguments
Return Value Example Register
3.9.2
set_master_clock_frequency_range
Table 99.
Prototype Description Arguments
set_master_clock_frequency_range
float STw5098_set_master_clock_frequency_range(unsigned char frequency) Set the master clock frequency (AMCK) range Parameter: Enter the frequency (in MHz), range 4 to 32 MHz If the frequency entered is correct, the function returns the corresponding value of MCKCOEFF. If the frequency entered is wrong, it returns -1. STw5098_set_master_clock_frequency_range(14) This function has the same effect than "master_clock_frequency_range()", except that it return a value, and the parameter to enter is more flexible. 30
Return Value
Example Comments Register
62/82
PM0028
Functions
3.9.3
da_master_mode_ratio
Table 100. da_master_mode_ratio
Prototype Description Arguments Return Value Example Register void STw5098_da_master_mode_ratio(char parameter) Set DA_OCK/DA_SYNC ratio in master mode to 256 or 512 Parameter: DEFAULT, RATIO_256, RATIO_512 none STw5098_da_master_mode_ratio(RATIO_256) 22
3.9.4
ad_master_mode_ratio
Table 101. ad_master_mode_ratio
Prototype Description Arguments Return Value Example Register void STw5098_ad_master_mode_ratio(char parameter) Set AD_OCK/AD_SYNC ratio in master mode to 256 or 512 Parameter: DEFAULT, RATIO_256, RATIO_512 none STw5098_ad_master_mode_ratio(RATIO_256) 25
3.9.5
da_output_clock_control
Table 102. da_output_clock_control
Prototype Description Arguments Return Value Example Register void STw5098_da_output_clock_control(char parameter) Enable DA_OCK output clock Parameter: DEFAULT, ON, OFF none STw5098_da_output_clock_control(ON) 22
63/82
Functions
PM0028
3.9.6
ad_output_clock_control
Table 103. ad_output_clock_control
Prototype Description Arguments Return Value Example Register void STw5098_ad_output_clock_control(char parameter) Enable AD_OCK output clock Parameter: DEFAULT, ON, OFF none STw5098_ad_output_clock_control(ON) 25
3.9.7
da_master_generator_control
Table 104. da_master_generator_control
Prototype Description Arguments Return Value Example Register void STw5098_da_master_generator_control(char parameter) Enable DA master generator Parameter: DEFAULT, ON, OFF none STw5098_da_master_generator_control(ON) 22
3.9.8
ad_master_generator_control
Table 105. ad_master_generator_control
Prototype Description Arguments Return Value Example Register void STw5098_ad_master_generator_control(char parameter) Enable AD master generator Parameter: DEFAULT, ON, OFF none STw5098_ad_master_generator_control(ON) 25
64/82
PM0028
Functions
3.9.9
set_da_master_mode_coeff
Table 106. set_da_master_mode_coeff
Prototype void STw5098_set_da_master_mode_coeff( unsigned short coefficient) To set the K coefficient obtained after the calculation of the following formulas, for the desired Sampling Frequency (FS) or Oversampled Clock Frequency (OCK). K(FS) = round( (2^25) * FS / (AMCK * MCKCOEFF ) ) K(OCK) = round( (2^25) * OCK / (AMCK * MCKCOEFF * OSR ) ) The K coefficient is set for DA path only. unsigned short coefficient: the 16 bits value of the K coefficient obtained by the calculation of the corresponding formula None STw5098_set_da_master_mode_coeff( 5432 ) STw5098_set_da_master_mode_coeff( 0x1538 ) This function is meaningful in master mode only 20 - 21
Description
Arguments Return Value Example Comments Register
3.9.10
da_master_mode_freq
Table 107. da_master_mode_freq
Prototype char STw5098_da_master_mode_freq( unsigned long sampling_frequency, unsigned long master_clock_freq) By only entering in parameter the sampling frequency and the master clock frequency, this function set the master clock frequency range (in register 30) and calculate and set the K coefficient (in register 20 21) for the desired sampling frequency (FS) in the clock generator. unsigned long sampling_frequency: the sampling frequency (FS) in Hz unsigned long master_clock_freq: the master clock frequency (AMCK) in Hz return 0 if everything is OK. return 1 if the K coefficient calculated is too big (greater than 0xFFFF), and the value 0xFFFF will be set. return 2 if sampling frequency is too big. return 3 if master clock frequency is too big. return 4 if an error occurred when setting the master clock frequency range. STw5098_da_master_mode_coeff( 44100, 320 0 00) This function is meaningful in master mode only. By using this function, you don't have to use the following function: set_master_clock_frequency_range( ) set_da_master_mode_coeff( ) 20 21 ; 30
Description
Arguments
Return Value
Example
Comments
Register
65/82
Functions
PM0028
3.9.11
set_ad_master_mode_coeff
Table 108. set_ad_master_mode_coeff
Prototype void STw5098_set_ad_master_mode_coeff( unsigned short coefficient) To set the K coefficient obtained after the calculation of the following formulas, for the desired Sampling Frequency (FS) or Oversampled Clock Frequency (OCK). K(FS) = round( (2^25) * FS / (AMCK * MCKCOEFF ) ) K(OCK) = round( (2^25) * OCK / (AMCK * MCKCOEFF * OSR ) ) The K coefficient is set for AD path only. unsigned short coefficient: the 16 bits value of the K coefficient obtained by the calculation of the corresponding formula None STw5098_set_ad_master_mode_coeff( 5432 ) STw5098_set_ad_master_mode_coeff( 0x1538 ) This function is meaningful in master mode only 23 - 24
Description
Arguments Return Value Example Comments Register
3.9.12
ad_master_mode_freq
Table 109. ad_master_mode_freq
Prototype char STw5098_ad_master_mode_freq( unsigned long sampling_frequency, unsigned long master_clock_freq) By only entering in parameter the sampling frequency and the master clock frequency, this function set the master clock frequency range (in register 30) and calculate and set the K coefficient (in register 23 24) for the desired sampling frequency (FS) in the clock generator. unsigned long sampling_frequency: the sampling frequency (FS) in Hz unsigned long master_clock_freq: the master clock frequency (AMCK) in Hz return 0 if everything is OK. return 1 if the K coefficient calculated is too big (greater than 0xFFFF), and the value 0xFFFF will be set. return 2 if sampling frequency is too big. return 3 if master clock frequency is too big. return 4 if an error occurred when setting the master clock frequency range. STw5098_ad_master_mode_coeff( 44100, 320 0 00) This function is meaningful in master mode only. By using this function, you don't have to use the following function: set_master_clock_frequency_range( ) set_ad_master_mode_coeff( ) 23 24 ; 30
Description
Arguments
Return Value
Example
Comments
Register
66/82
PM0028
Functions
3.9.13
da_pcm_master_mode_ratio
Table 110. da_pcm_master_mode_ratio
Prototype Description Arguments Return Value Example Comments Register void STw5098_da_pcm_master_mode_ratio(char parameter) DA_CK/DA_SYNC ratio in PCM master mode Parameter : DEFAULT, BIT_16_32, BIT_64, BIT_128, BIT_256_512 none STw5098_da_pcm_master_mode_ratio(BIT_64) See datasheet 22
3.9.14
ad_pcm_master_mode_ratio
Table 111. ad_pcm_master_mode_ratio
Prototype Description Arguments Return Value Example Comments Register void STw5098_ad_pcm_master_mode_ratio(char parameter) AD_CK/AD_SYNC ratio in PCM master mode Parameter: DEFAULT, BIT_16_32, BIT_64, BIT_128, BIT_256_512 none STw5098_ad_pcm_master_mode_ratio See datasheet 25
67/82
Functions
PM0028
3.9.15
master_clock_input_control
Table 112. master_clock_input_control
Prototype Description Arguments Return Value Example Register void STw5098_master_clock_input_control(char parameter) Enable AMCK clock input pin Parameter: DEFAULT, ON, OFF none STw5098_master_clock_input_control(ON) 0
3.9.16
pll_control
Table 113. pll_control
Prototype Description Arguments Return Value Example Register void STw5098_pll_control(char parameter) Enable the PLL Parameter: DEFAULT, ON, OFF none STw5098_pll_control(ON) 0
3.9.17
master_clock_inversion
Table 114. master_clock_inversion
Prototype Description Arguments Return Value Example Register void STw5098_master_clock_inversion(char parameter) Inver t the master clock AMCK Parameter: DEFAULT, INVERTED, NO_INVERTED none STw5098_master_clock_inversion(NO_INVERTED) 28
68/82
PM0028
Functions
3.9.18
master_clock_signal
Table 115. master_clock_signal
Prototype Description Arguments Return Value Example Register void STw5098_master_clock_signal(char parameter) To select the signal at AMCK pin as a square or a sinus Parameter: DEFAULT, SQUARE, SINUS none STw5098_master_clock_signal(SINUS) 30
3.9.19
internal_oscillator
Table 116. internal_oscillator
Prototype Description Arguments Return Value Example Register void STw5098_internal_oscillator(char parameter) To enable the internal oscillator. (The analog blocks use oscillator clock) Parameter: DEFAULT, ON, OFF none STw5098_internal_oscillator(ON) 0
69/82
List of functions classified by register number
PM0028
4
List of functions classified by register number
This chapter lists which function is used to configure a specific bit of a register. The parameters given for each function are examples, the user will configure the parameters according to their needs. There can be two functions to configure the same register bit, the user needs to select only one of them.
4.1
Register CR0 to CR13
Table 117. Register CR0
Register CR0 Bits 7 6 5 4 3 2 1 0 STw5098_device_power(ON); STw5098_analog_block_power(ON); STw5098_master_clock_input_control(ON); STw5098_internal_oscillator(ON) STw5098_pll_control(ON); STw5098_headset_plugin_detector(ON); STw5098_analog_supply_voltage(RANGE_2V4_TO_2V7); STw5098_digital_io_voltage(RANGE_1V2_TO_1V8); Function to use
Table 118. Register CR1
Register CR1 Bits 7 6 5 4 3 2 1 0 STw5098_ad_conversion(LEFT, ON); STw5098_ad_conversion(BOTH, ON); STw5098_ad_conversion(RIGHT, ON); STw5098_da_conversion(LEFT, ON); STw5098_da_conversion(BOTH, ON); STw5098_da_conversion(RIGHT, ON); STw5098_mic_amp_enable_ctrl(LEFT, ON); STw5098_mic_amp_enable_ctrl(BOTH, ON); STw5098_mic_amp_enable_ctrl(RIGHT, ON); STw5098_line_in_amp_enable_ctrl(LEFT, ON); STw5098_line_in_amp_enable_ctrl(BOTH, ON); STw5098_line_in_amp_enable_ctrl(RIGHT, ON); Function to use
70/82
PM0028 Table 119. Register CR2
List of functions classified by register number
Register CR2 Bits 7 6 5 4 3 2 1 0 STw5098_line_out_enable_ctrl(LEFT, ON); STw5098_line_out_enable_ctrl(BOTH, ON); STw5098_line_out_enable_ctrl(RIGHT, ON); STw5098_headphone_enable_ctrl(LEFT, ON); STw5098_headphone_enable_ctrl(BOTH, ON); STw5098_headphone_enable_ctrl(RIGHT, ON); STw5098_headphone_ref_voltage_generator(ON); STw5098_loudspeaker_enable_ctrl(ON); STw5098_analog_output_mixer(LEFT, ON); STw5098_analog_output_mixer(BOTH, ON); STw5098_analog_output_mixer(RIGHT, ON); Function to use
Table 120. Register CR3
Register CR3 Bits 7-5 4-0 Function to use STw5098_set_mic_attenuator(LEFT, MIC_A_0_DB); STw5098_mic_attenuator(LEFT, PLUS); STw5098_set_mic_preamp_gain(LEFT, MIC_G_39_DB); STw5098_mic_preamp_gain(LEFT, PLUS);
Table 121. Register CR4
Register CR4 Bits 7-5 4-0 Function to use STw5098_set_mic_attenuator(RIGHT,MIC_A_MINUS_12_DB); STw5098_mic_attenuator(RIGHT, PLUS); STw5098_set_mic_preamp_gain(RIGHT, MIC_G_0_DB); STw5098_mic_preamp_gain(RIGHT, PLUS);
Table 122. Register CR3 - CR4
Register CR3 - CR4 Bits 7-5 4-0 Function to use STw5098_set_mic_attenuator(BOTH, MIC_A_0_DB); STw5098_mic_attenuator(BOTH, PLUS); STw5098_set_mic_preamp_gain(BOTH, MIC_G_39_DB); STw5098_mic_preamp_gain(BOTH, PLUS);
71/82
List of functions classified by register number Table 123. Register CR5
Register CR5 Bits 4-0 Function to use STw5098_set_line_in_amp_gain(LEFT, LIN_G_2_DB); STw5098_line_in_amp_gain(LEFT, PLUS);
PM0028
Table 124. Register CR6
Register CR6 Bits 4-0 Function to use STw5098_set_line_in_amp_gain(RIGHT, LIN_G_2_DB); STw5098_line_in_amp_gain(RIGHT, PLUS);
Table 125. Register CR5 - CR6
Register CR5 - CR6 Bits 4-0 Function to use STw5098_set_line_in_amp_gain(BOTH, LIN_G_2_DB); STw5098_line_in_amp_gain(BOTH, PLUS);
Table 126. Register CR7
Register CR7 Bits 7-5 4-0 Function to use STw5098_set_line_out_gain(LOG_MINUS_18_DB); STw5098_line_out_gain(PLUS); STw5098_set_loudspeaker_gain(LSG_6_DB); STw5098_loudspeaker_gain(PLUS);
Table 127. Register CR8
Register CR8 Bits 4-0 Function to use STw5098_set_headphone_gain(LEFT, HP_G_0_DB); STw5098_headphone_gain(LEFT, PLUS);
Table 128. Register CR9
Register CR9 Bits 4-0 Function to use STw5098_set_headphone_gain(RIGHT, HP_G_0_DB); STw5098_headphone_gain(RIGHT, PLUS);
72/82
PM0028 Table 129. Register CR8 - CR9
List of functions classified by register number
Register CR8 - CR9 Bits 4-0 Function to use STw5098_set_headphone_gain(BOTH, HP_G_0_DB); STw5098_headphone_gain(BOTH, PLUS);
Table 130. Register CR10
Register CR10 Bits 5-0 Function to use STw5098_set_digital_da_gain(LEFT, DAC_G_0_DB); STw5098_digital_da_gain(LEFT, PLUS);
Table 131. Register CR11
Register CR11 Bits 5-0 Function to use STw5098_set_digital_da_gain(RIGHT, DAC_G_0_DB); STw5098_digital_da_gain(RIGHT, PLUS);
Table 132. Register CR10 - CR11
Register CR10-CR11 Bits 5-0 Function to use STw5098_set_digital_da_gain(BOTH, DAC_G_0_DB); STw5098_digital_da_gain(BOTH, PLUS);
Table 133. Register CR12
Register CR12 Bits 5-0 Function to use STw5098_set_digital_ad_gain(LEFT, ADC_G_8_DB); STw5098_digital_ad_gain(LEFT, PLUS)
Table 134. Register CR13
Register CR13 Bits 5-0 Function to use STw5098_set_digital_ad_gain(RIGHT, ADC_G_8_DB); STw5098_digital_ad_gain(RIGHT, PLUS);
73/82
List of functions classified by register number Table 135. Registers CR12 - CR13
Registers CR12 - CR13 Bits 5-0 Function to use STw5098_set_digital_ad_gain(BOTH, ADC_G_8_DB); STw5098_digital_ad_gain(BOTH, PLUS)
PM0028
4.2
Register CR14 to CR19
Table 136. Register CR14
Register CR14 Bits 7 6-4 3-0 Function to use STw5098_da_dynamic_compression(ON); STw5098_set_da_treble(TREBLE_6_DB); STw5098_da_treble(PLUS); STw5098_set_da_bass(BASS_12_5_DB); STw5098_da_bass(PLUS);
Table 137. Register CR15
Register CR15 Bits 4-0 Function to use STw5098_set_da_to_ad_mixing(DA2ADG_2_DB); STw5098_da_to_ad_mixing(PLUS);
Table 138. Register CR16
Register CR16 Bits 5-0 Function to use STw5098_set_ad_to_da_sidetone(AD2DAG_MINUS_1_DB); STw5098_ad_to_da_sidetone(PLUS);
74/82
PM0028 Table 139. Register CR17
List of functions classified by register number
Register CR17 Bits 7 6 5 4 3 2 1 0 STw5098_mic_bias_ctrl(ON); STw5098_mic_bias_pull_down(HI_Z); STw5098_mic_to_ad_mixer(CONNECTED); STw5098_line_in_to_ad_mixer(CONNECTED); STw5098_mic_to_da_mixer(CONNECTED); STw5098_line_in_to_da_mixer(CONNECTED); STw5098_da_to_mixer(CONNECTED); STw5098_line_out_input_select(MICROPHONE); Function to use
Table 140. Register CR18
Register CR18 Bits 6 5 4-3 2 1-0 Function to use STw5098_unused_analog_in_bias(HI_Z); STw5098_line_in_amp_mute_ctrl(UNMUTE); STw5098_line_in_amp_select(LINE_IN); STw5098_mic_amp_mute_ctrl(UNMUTE); STw5098_mic_amp_select(MIC);
Table 141. Register CR19
Register CR19 Bits 7-6 4 3 2 1-0 Function to use STw5098_set_common_mode_voltage_level(VOLT_1_35); STw5098_line_out_mute_ctrl(UNMUTE); STw5098_headphone_mute_ctrl(UNMUTE); STw5098_loudspeaker_limit_ctrl(LIMITED); STw5098_loudspeaker_input_select(MONO);
75/82
List of functions classified by register number
PM0028
4.3
Register CR20 to CR29
Table 142. Register CR20- CR21
Register CR20 - CR21 Bits 15 - 0 Function to use STw5098_da_master_mode_freq(32000, 12288000); STw5098_set_da_master_mode_coeff(0x12AB);
Table 143. Register CR23 - CR24
Register CR23 - CR24 Bits 15-0 Function to use STw5098_ad_master_mode_freq(32000, 12288000); STw5098_set_ad_master_mode_coeff(0x12AB);
Table 144. Register CR22
Register CR22 Bits 5 4 3 2 1-0 Function to use STw5098_da_master_slave_mode(MASTER); STw5098_da_master_generator_control(ON); STw5098_da_output_clock_control(ON); STw5098_da_master_mode_ratio(RATIO_512); STw5098_da_pcm_master_mode_ratio(BIT_256_512);
Table 145. Register CR25
Register CR25 Bits 5 4 3 2 1-0 Function to use STw5098_ad_master_slave_mode(MASTER); STw5098_ad_master_generator_control(ON); STw5098_ad_output_clock_control(ON); STw5098_ad_master_mode_ratio(RATIO_512); STw5098_ad_pcm_master_mode_ratio(BIT_256_512);
76/82
PM0028 Table 146. Register CR26
List of functions classified by register number
Register CR26 Bits 7 6-4 3 2-0 Function to use STw5098_da_channel_swap(NO_SWAP); STw5098_da_audio_interface_format(DELAYED); STw5098_da_word_number_spi(ONE); STw5098_da_bit_number(BIT_32);
Table 147. Register CR27
Register CR27 Bits 7 6-4 3 2-0 Function to use STw5098_ad_channel_swap(NO_SWAP); STw5098_ad_audio_interface_format(DELAYED); STw5098_ad_channel_number_spi(ONE); STw5098_ad_bit_number(BIT_32);
77/82
List of functions classified by register number Table 148. Register CR28
Register CR28 Bits 7 6 5 4 3 2 1 0 Function to use STw5098_master_clock_inversion(NO_INVERTED); STw5098_da_clock_pin_polarity(NO_INVERTED); STw5098_da_interface_delayed_or_polarity(DELAYED); STw5098_da_mono_stereo(MONO); STw5098_ad_clock_pin_polarity(NO_INVERTED); STw5098_ad_interface_delayed_or_polarity(DELAYED); STw5098_ad_mono_stereo(MONO); STw5098_ad_data_pin_control(TO_HIGH_Z);
PM0028
Table 149. Register CR29
Register CR29 Bits 6 5 4 3 2 1 0 STw5098_da_filter(AUDIO); STw5098_da_sample_rate_range(RANGE_88_TO_96); STw5098_da_voice_high_pass_filter(OFF); STw5098_ad_filter(AUDIO); STw5098_ad_sample_rate_range(RANGE_88_TO_96); STw5098_ad_audio_dc_filter(OFF); STw5098_ad_voice_high_pass_filter(OFF); Function to use
78/82
PM0028
List of functions classified by register number
4.4
Register CR30 to CR35
Table 150. Register CR30
Register CR30 Bits 7 3 2-0 STw5098_software_reset( ); STw5098_master_clock_signal(SINUS); STw5098_set_master_clock_frequency_range(8); STw5098_master_clock_frequency_range(RANGE_8_TO_12); Function to use
Table 151. Register CR31
Register CR31 Bits 7 6 5 4 3 2 1 0 Function to use STw5098_irq_source_select(VLSH_STATUS, ON); STw5098_irq_source_select(PUSHB_STATUS, ON); STw5098_irq_source_select(HSDET_STATUS, ON); STw5098_irq_source_select(VLSH_EVENT, ON); STw5098_irq_source_select(ALL, ON); STw5098_irq_source_select(PUSHB_EVENT, ON); STw5098_irq_source_select(HSDET_EVENT, ON); STw5098_irq_source_select(OVF_EVENT, ON); STw5098_irq_source_select(POR_EVENT, ON);
Table 152. Register CR32
Register CR32 Bits 7 6 5 4 3 2 1 0 Function to use bit_status = STw5098_get_irq_status(VCCLS) bit_status = STw5098_get_irq_status( HEADSET_BUTTON) bit_status = STw5098_get_irq_status( HEADSET_CONNECTOR) bit_status = STw5098_get_irq_status( VLSH_BIT) bit_status = STw5098_get_irq_status( HEADSET_BUTTON_STATUS) bit_status = STw5098_get_irq_status( HEADSET_CONNECTOR_STATUS); bit_status = STw5098_get_irq_status( AUDIO_DATA_OVERFLOW) bit_status = STw5098_get_irq_status( DEVICE_RESET) all_bit_status = STw5098_get_irq_status(ALL);
79/82
List of functions classified by register number Table 153. Register CR33
Register CR33 Bits 5 4-3 2 1 0 Function to use STw5098_spi_output_control(TO_ZERO) STw5098_spi_output_select(IRQ_PIN) STw5098_irq_pin_behaviour(PULL_DOWN) STw5098_bit_status = get_overflow_status(DA) STw5098_bit_status = get_overflow_status(AD)
PM0028
Table 154. Register CR34
Register CR34 Bits 7-4 3-0 Function to use STw5098_set_agc_attack_time(AGCATT_AUDIO_32); STw5098_agc_attack_time(PLUS); STw5098_set_agc_decay_time(AGCDEC_AUDIO_256); STw5098_agc_decay_time(PLUS);
Table 155. Register CR35
Register CR35 Bits 6 5 4 3-0 Function to use STw5098_agc_act_on_line_in_gain(ON) STw5098_agc_act_on_mic_gain(ON) STw5098_agc_action_range(MINUS_PLUS_21_DB) STw5098_set_agc_ouput_level(AGCLEV_MINUS_30_DB); STw5098_agc_ouput_level(PLUS)
80/82
PM0028
Revision history
5
Revision history
Table 156. Document revision history
Date 05-Jul-2007 Revision 1 Changes Initial release on www.st.com.
81/82
PM0028
Please Read Carefully:
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries ("ST") reserve the right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any time, without notice. All ST products are sold pursuant to ST's terms and conditions of sale. Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no liability whatsoever relating to the choice, selection or use of the ST products and services described herein. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST'S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS EXPRESSLY APPROVED IN WRITING BY AN AUTHORIZE REPRESENTATIVE OF ST, ST PRODUCTS ARE NOT DESIGNED, AUTHORIZED OR WARRANTED FOR USE IN MILITARY, AIR CRAFT, SPACE, LIFE SAVING, OR LIFE SUSTAINING APPLICATIONS, NOR IN PRODUCTS OR SYSTEMS, WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY, DEATH, OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any liability of ST.
ST and the ST logo are trademarks or registered trademarks of ST in various countries. Information in this document supersedes and replaces all information previously supplied. The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.
2007 STMicroelectronics - All rights reserved STMicroelectronics group of companies Australia - Belgium - Brazil - Canada - China - Czech Republic - Finland - France - Germany - Hong Kong - India - Israel - Italy - Japan Malaysia - Malta - Morocco - Singapore - Spain - Sweden - Switzerland - United Kingdom - United States of America www.st.com
82/82
|