<?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>Kinetis MicrocontrollersのトピックKL27Z DMA from TPM2,CH0 CnV register causes bus error</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700518#M43071</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using a Kinetis KL27Z prototyping board and KSDK 2.2.1 generated by MCUXpresso.&lt;/P&gt;&lt;P&gt;In the MCUXpresso pins tool I've enabled DMA channel 3 routed to the TPM2_CH0_Event. I've also enabled TPM2,0 on pin 37. On the board itself I have a signal generator attached to pin 37.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've configured the TPM2,0 in input capture mode and set it to trigger DMA. I want to DMA the channel counter (CnV) register to a memory location but on the trigger the DMA BSE bit is set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//TPM is initialised with:&lt;/P&gt;&lt;P&gt;TPM_Init(TPM2, &amp;amp;tpmConfig); //default config&lt;BR /&gt;TPM_SetupInputCapture(TPM2, kTPM_Chnl_0, kTPM_RiseAndFallEdge);&lt;BR /&gt;TPM2-&amp;gt;SC |= TPM_SC_DMA_MASK;&lt;BR /&gt;TPM2-&amp;gt;CONTROLS[0].CnSC |= TPM_CnSC_DMA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//set the DMA source address&lt;/P&gt;&lt;P&gt;uint32_t cnv_reg = (uint32_t)&amp;amp;(TPM0-&amp;gt;CONTROLS[kTPM_Chnl_0].CnV);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Then DMA&lt;/P&gt;&lt;P&gt;DMAMUX_Init(DMAMUX0);&lt;/P&gt;&lt;P&gt;DMAMUX_SetSource(DMAMUX0, DMA_CHANNEL3_IDX, (uint8_t)kDmaRequestMux0TPM2Channel0);&lt;/P&gt;&lt;P&gt;DMA_Init(DMA0);&lt;/P&gt;&lt;P&gt;dma_handle_t dma_handle;&lt;BR /&gt;DMA_CreateHandle(&amp;amp;dma_handle, DMA0, 3U);&lt;/P&gt;&lt;P&gt;DMA_PrepareTransfer(&amp;amp;dma_config,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void*)cnv_reg, sizeof(uint32_t),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;output_buffer, sizeof(uint32_t),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4, kDMA_PeripheralToMemory);&lt;BR /&gt;DMA_SubmitTransfer(&amp;amp;dma_handle, &amp;amp;dma_config, kDMA_NoOptions);&lt;BR /&gt;DMA_EnableCycleSteal(DMA0, 3U, true);&lt;BR /&gt;DMA_StartTransfer(&amp;amp;dma_handle);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Start the TPM timer&lt;/P&gt;&lt;P&gt;TPM_StartTimer(TPM2, kTPM_SystemClock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//And finally wait for results (turn on the output of the signal generator manually)&lt;/P&gt;&lt;P&gt;PRINTF("TPM STATUS: 0x%x&amp;nbsp; DMA_DSR_BCR: 0x%x\r", TPM2-&amp;gt;STATUS, DMA0-&amp;gt;DMA[3U].DSR_BCR);&lt;/P&gt;&lt;P&gt;//this results in "TPM STATUS: 0x101&amp;nbsp; DMA_DSR_BCR: 0x210ffffc" printed (note the BSE bit is set)&lt;/P&gt;&lt;P&gt;How can I avoid a bus error here?&lt;/P&gt;&lt;P&gt;Thanks very much for any help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 06 Oct 2017 13:57:43 GMT</pubDate>
    <dc:creator>jamescollier</dc:creator>
    <dc:date>2017-10-06T13:57:43Z</dc:date>
    <item>
      <title>KL27Z DMA from TPM2,CH0 CnV register causes bus error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700518#M43071</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using a Kinetis KL27Z prototyping board and KSDK 2.2.1 generated by MCUXpresso.&lt;/P&gt;&lt;P&gt;In the MCUXpresso pins tool I've enabled DMA channel 3 routed to the TPM2_CH0_Event. I've also enabled TPM2,0 on pin 37. On the board itself I have a signal generator attached to pin 37.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've configured the TPM2,0 in input capture mode and set it to trigger DMA. I want to DMA the channel counter (CnV) register to a memory location but on the trigger the DMA BSE bit is set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//TPM is initialised with:&lt;/P&gt;&lt;P&gt;TPM_Init(TPM2, &amp;amp;tpmConfig); //default config&lt;BR /&gt;TPM_SetupInputCapture(TPM2, kTPM_Chnl_0, kTPM_RiseAndFallEdge);&lt;BR /&gt;TPM2-&amp;gt;SC |= TPM_SC_DMA_MASK;&lt;BR /&gt;TPM2-&amp;gt;CONTROLS[0].CnSC |= TPM_CnSC_DMA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//set the DMA source address&lt;/P&gt;&lt;P&gt;uint32_t cnv_reg = (uint32_t)&amp;amp;(TPM0-&amp;gt;CONTROLS[kTPM_Chnl_0].CnV);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Then DMA&lt;/P&gt;&lt;P&gt;DMAMUX_Init(DMAMUX0);&lt;/P&gt;&lt;P&gt;DMAMUX_SetSource(DMAMUX0, DMA_CHANNEL3_IDX, (uint8_t)kDmaRequestMux0TPM2Channel0);&lt;/P&gt;&lt;P&gt;DMA_Init(DMA0);&lt;/P&gt;&lt;P&gt;dma_handle_t dma_handle;&lt;BR /&gt;DMA_CreateHandle(&amp;amp;dma_handle, DMA0, 3U);&lt;/P&gt;&lt;P&gt;DMA_PrepareTransfer(&amp;amp;dma_config,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void*)cnv_reg, sizeof(uint32_t),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;output_buffer, sizeof(uint32_t),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4, kDMA_PeripheralToMemory);&lt;BR /&gt;DMA_SubmitTransfer(&amp;amp;dma_handle, &amp;amp;dma_config, kDMA_NoOptions);&lt;BR /&gt;DMA_EnableCycleSteal(DMA0, 3U, true);&lt;BR /&gt;DMA_StartTransfer(&amp;amp;dma_handle);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Start the TPM timer&lt;/P&gt;&lt;P&gt;TPM_StartTimer(TPM2, kTPM_SystemClock);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//And finally wait for results (turn on the output of the signal generator manually)&lt;/P&gt;&lt;P&gt;PRINTF("TPM STATUS: 0x%x&amp;nbsp; DMA_DSR_BCR: 0x%x\r", TPM2-&amp;gt;STATUS, DMA0-&amp;gt;DMA[3U].DSR_BCR);&lt;/P&gt;&lt;P&gt;//this results in "TPM STATUS: 0x101&amp;nbsp; DMA_DSR_BCR: 0x210ffffc" printed (note the BSE bit is set)&lt;/P&gt;&lt;P&gt;How can I avoid a bus error here?&lt;/P&gt;&lt;P&gt;Thanks very much for any help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Oct 2017 13:57:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700518#M43071</guid>
      <dc:creator>jamescollier</dc:creator>
      <dc:date>2017-10-06T13:57:43Z</dc:date>
    </item>
    <item>
      <title>Re: KL27Z DMA from TPM2,CH0 CnV register causes bus error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700519#M43072</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;James&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What is cnv_reg? If the BES bit is set it would mean that this is an invalid address.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Oct 2017 15:17:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700519#M43072</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-10-06T15:17:12Z</dc:date>
    </item>
    <item>
      <title>Re: KL27Z DMA from TPM2,CH0 CnV register causes bus error</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700520#M43073</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've edited the post to show what cnv_reg is.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that it now becomes obvious what the problem is: cnv_reg is pointing to TPM0, when TPM2 was initialised and intended for use.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Oct 2017 13:06:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27Z-DMA-from-TPM2-CH0-CnV-register-causes-bus-error/m-p/700520#M43073</guid>
      <dc:creator>jamescollier</dc:creator>
      <dc:date>2017-10-09T13:06:55Z</dc:date>
    </item>
  </channel>
</rss>

