<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>ColdFire/68K Microcontrollers and Processors中的主题 Using audio codec on M5329EVB</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143065#M2656</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have stereo input and output jacks on my M5329EVB. I also have a touchscreen device interfacing with the evaluation board. What I would like to do is just making a sound whenever I touch the screen. I'm working with µCLinux (Linux-2.6.17.7)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I know that my fire engine has a TLV320AIC23B stereo codec but I don't really know how to use it. I've read in documentation that it supports SPI, SSI serial communication. But how can I activate it ? Does anybody have a clue ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;William&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 14 Aug 2007 22:10:03 GMT</pubDate>
    <dc:creator>will76</dc:creator>
    <dc:date>2007-08-14T22:10:03Z</dc:date>
    <item>
      <title>Using audio codec on M5329EVB</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143065#M2656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have stereo input and output jacks on my M5329EVB. I also have a touchscreen device interfacing with the evaluation board. What I would like to do is just making a sound whenever I touch the screen. I'm working with µCLinux (Linux-2.6.17.7)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I know that my fire engine has a TLV320AIC23B stereo codec but I don't really know how to use it. I've read in documentation that it supports SPI, SSI serial communication. But how can I activate it ? Does anybody have a clue ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;William&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Aug 2007 22:10:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143065#M2656</guid>
      <dc:creator>will76</dc:creator>
      <dc:date>2007-08-14T22:10:03Z</dc:date>
    </item>
    <item>
      <title>Re: Using audio codec on M5329EVB</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143066#M2657</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi William,&lt;/DIV&gt;&lt;DIV&gt;Freescale is going to add the touch screen example in the LTIB BSP for the M5329EVB (&lt;A href="http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0127260061033202A9" rel="nofollow" target="_blank"&gt;http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0127260061033202A9&lt;/A&gt;)&amp;nbsp;and release it in October time frame (I think).&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The current LTIB BSP supports driving the audio codec and will even play MP3 files.&lt;/DIV&gt;&lt;DIV&gt;Nice touch (sorry for pun) for wanting to have touch screen generate a sound.&amp;nbsp; I may pilliage that idea and see if we can implement that too :smileywink:&lt;/DIV&gt;&lt;DIV&gt;Please note that the Rev D and older versions of the M5329EVB had errata for the codec.&amp;nbsp; The codec part on the evb only would played/output audio and the microphone input would not work.&amp;nbsp; I believe new revision of the evb will have the correct codec part number to enable audio input too.&lt;/DIV&gt;&lt;DIV&gt;The audio codec interfaces to the MCF5329 via SSI (I2S).&lt;/DIV&gt;&lt;DIV&gt;Here is code snippet for initializing the I2S interface:&lt;/DIV&gt;&lt;DIV&gt;/*-------------------------------------------------------------------------*/&lt;BR /&gt;/*!&lt;BR /&gt;&amp;nbsp;* \brief&amp;nbsp;Initializes the Audio controller.&lt;BR /&gt;&amp;nbsp;*&lt;BR /&gt;&amp;nbsp;* \b Purpose:&lt;BR /&gt;&amp;nbsp;* &amp;nbsp;&amp;nbsp;This function is called to intialize the Audio hardware&lt;BR /&gt;&amp;nbsp;* &amp;nbsp;&amp;nbsp;and prepare it for use.&lt;BR /&gt;&amp;nbsp;*&lt;BR /&gt;&amp;nbsp;* \param&amp;nbsp;base&lt;BR /&gt;&amp;nbsp;* &amp;nbsp;&amp;nbsp;The address of the Audio controller.&lt;BR /&gt;&amp;nbsp;*&lt;BR /&gt;&amp;nbsp;* \return&amp;nbsp;True upon success, false otherwise.&lt;BR /&gt;&amp;nbsp;*/&lt;BR /&gt;/*-------------------------------------------------------------------------*/&lt;BR /&gt;static uint32 audio_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;uint16 temp16;&lt;BR /&gt;&amp;nbsp;uint32 index;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/********************************/&lt;BR /&gt;&amp;nbsp;/* Setup the SPI - control link */&lt;BR /&gt;&amp;nbsp;/********************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* QSPI does not operate in slave mode.&amp;nbsp; Set to master. */&lt;BR /&gt;&amp;nbsp;temp16 = MCF_QSPI_QMR_MSTR |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QMR_BITS(0x000) ; // 16 bit xfers&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QMR_CPOL |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clock plarity&lt;BR /&gt;// &amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QMR_CPHA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // leading edge of CLK&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Lets pick 300kHz clock for now */&lt;BR /&gt;&amp;nbsp;temp16 |= MCF_QSPI_QMR_BAUD(133);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_QSPI_QMR = temp16;&lt;BR /&gt;//&amp;nbsp;printf("QMR: 0x%04x\n", temp16);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;temp16 = MCF_QSPI_QIR_WCEF |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QIR_SPIFE |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QIR_ABRT |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_QSPI_QIR_SPIF;&amp;nbsp;&amp;nbsp; // Clear interrupts&lt;BR /&gt;&amp;nbsp;MCF_QSPI_QIR = temp16;&lt;BR /&gt;//&amp;nbsp;printf("QIR: 0x%04x\n", temp16);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Enable the QSPI pins */&lt;BR /&gt;&amp;nbsp;MCF_GPIO_PAR_QSPI = ( 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_SCK(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_DOUT(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_DIN(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_PCS0(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_PCS1(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_QSPI_PAR_PCS2(3) );&lt;/DIV&gt;&lt;DIV&gt;//&amp;nbsp;printf("GPIO_PAR_QSPI: 0x%04x\n", temp16);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/********************************/&lt;BR /&gt;&amp;nbsp;/*&amp;nbsp; Setup the I2S - data link&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;/********************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Enable SSI clock in CCM */&lt;BR /&gt;&amp;nbsp;MCF_CCM_CDR = MCF_CCM_CDR_SSIDIV(10); // DES changed from 40 to 4 = 12MHz MCLK&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Issue a ColdFire SSI module reset and then enable the module for programming/initialization */&lt;BR /&gt;&amp;nbsp;MCF_SSI_CR &amp;amp;= ~MCF_SSI_CR_SSI_EN;&amp;nbsp; //DES Disable SSI module&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* SSI module uses internal CPU clock */&lt;BR /&gt;&amp;nbsp;MCF_CCM_MISCCR |= MCF_CCM_MISCCR_SSI_SRC;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_SSI_CR =&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_I2S(1)&amp;nbsp; |&amp;nbsp; // Set I2S master mode&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_I2S(2)&amp;nbsp; |&amp;nbsp; // Set I2S slave mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_MCE&amp;nbsp; |&amp;nbsp; // Set clock out on SSI_MCLK pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_SYN&amp;nbsp; |&amp;nbsp; // Enable synchronous mode&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_NET&amp;nbsp; |&amp;nbsp; // Enable network mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CR_TCH;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable two channel mode&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_SSI_TCR =&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TXBIT0 |&amp;nbsp; // 0=shift from msb; 1=shift from lsb - DES doesn't seem to do anything if used&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TFEN0 |&amp;nbsp; // TX FIFO 1 enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TFEN1 |&amp;nbsp; // TX FIFO 0 enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TFDIR |&amp;nbsp; // internally generated frame sync&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TXDIR |&amp;nbsp; // internally generated bit clock&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TSHFD |&amp;nbsp; // Transmit shift; 0=msb first, 1=lsb first - DES this does make difference if used&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TSCKP ;&amp;nbsp;&amp;nbsp; // Clock polarity: 0=clk data on rising edge; 1=clk data on falling edge&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TFSI&amp;nbsp; |&amp;nbsp;&amp;nbsp; // Frame sync active during transmission: 0=high; 1=low&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TFSL&amp;nbsp; |&amp;nbsp; //Transmit frame sync length: 0=one word; 1=one bit&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_TCR_TEFS;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TX early frame sync: 0=TX at first bit; 1= TX 1 bit before data&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_SSI_CCR = MCF_SSI_CCR_WL(7)&amp;nbsp; | &amp;nbsp;// 16 bit word length&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CCR_DC(1) | &amp;nbsp;&amp;nbsp;// Frame rate divider - DES DC=1 really mean two words per frame&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CCR_PM(15);&amp;nbsp;&amp;nbsp;&amp;nbsp;// using equations in section 24.4.2.2 in MCF5329RM.pdf&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CCR_DIV2;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 0=bypass; 1=divide by 2&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_SSI_CCR_PSR;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Prescaler: 0=bypass; 1=divide clk by 8&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_SSI_TMASK = MCF_SSI_TMASK_SSI_TMASK(0xfffffffc);&amp;nbsp;//DES Transmit only on time slots 1&amp;amp;2&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;MCF_SSI_IER = 0;&amp;nbsp;//DES clear/disable interrupts and DMA&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;MCF_SSI_CR |= MCF_SSI_CR_SSI_EN;&amp;nbsp;//Enable SSI module&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;/* Enable the SSI pins */&lt;BR /&gt;&amp;nbsp;MCF_GPIO_PAR_SSI = ( 0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_SSI_PAR_MCLK&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_SSI_PAR_TXD(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_SSI_PAR_RXD(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_SSI_PAR_FS(3)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_GPIO_PAR_SSI_PAR_BCLK(3) );&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;codec_write(TLV320_RESET_REG, 0x000);&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_RESET_REG, 0x000);&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_RESET_REG, 0x000);&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_RESET_REG, 0x000);&lt;BR /&gt;&amp;nbsp;for (index = 0; index &amp;lt; 1000; index++)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; asm(nop);&amp;nbsp;&amp;nbsp;//DES&lt;BR /&gt;&amp;nbsp;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;codec_write(TLV320_POWER_DOWN_CTL, 0x067);&amp;nbsp; // Turn off: [CLK,OSC,ADC,MIC,LINE]&amp;nbsp; Turn on:[OUT,DAC]&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_DIGITAL_IF_FMT_CTL, 0x00c);&amp;nbsp; // DES Set DIN I2S, Slave...setting LRSWAP does swap right and left...so does setting LRP&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_DIGITAL_APATH_CTL, 0x001);&amp;nbsp; // DES: was 0x000 Set A path...As long as DACM 0 I hear audio&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_SAMPLE_RATE_CTL, TLV320_SAMPLE_22KHZ + TLV320_Sample_USB);&amp;nbsp; // Set sample rate Guess for now&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_ANALOG_APATH_CTL, 0x012);&amp;nbsp; //DES (012)added this line...i.e. it wasn't here before&lt;BR /&gt;&amp;nbsp;codec_write(TLV320_DIGITAL_IF_ACT, 0x001);&amp;nbsp; // Activate Dig IF&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;return ERR_NO_ERROR;&lt;/DIV&gt;&lt;DIV&gt;} /* end init() */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;David&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Aug 2007 00:59:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143066#M2657</guid>
      <dc:creator>DavidS</dc:creator>
      <dc:date>2007-08-15T00:59:21Z</dc:date>
    </item>
    <item>
      <title>Re: Using audio codec on M5329EVB</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143067#M2658</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi David,&lt;BR /&gt;&lt;BR /&gt;You're saying that the current LTIB BSP Linux supports driving the audio codec and will even play MP3 files.&lt;DIV&gt;&lt;/DIV&gt;I've looked through directories and found m5329_audio.c file (the path is .../Ltib/rpm/BUILD/linux-2.6.17.7/drivers/spi/) It is also using SPI to interface with TLV320AIC23B.&lt;BR /&gt;Is it the right file to initialize the communication ?&lt;BR /&gt;Besides, I can't find the mp3player application in LTIB BSP. How can I build this application?&lt;BR /&gt;Best regards,&lt;BR /&gt;William&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Aug 2007 19:36:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Using-audio-codec-on-M5329EVB/m-p/143067#M2658</guid>
      <dc:creator>will76</dc:creator>
      <dc:date>2007-08-16T19:36:59Z</dc:date>
    </item>
  </channel>
</rss>

