<?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>topic Re: LPC5528 SPI FIFOWR controlbit issue in MCUXpresso SDK</title>
    <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072978#M2516</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;I have tested the SPI8 module with SPI master plus DMA with Byte transfer on MY LPC55S69-EVK, it is okay.&lt;/P&gt;&lt;P&gt;i copy the result here.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/111471i09E3E81861B2CF13/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 28 Aug 2020 05:21:31 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2020-08-28T05:21:31Z</dc:date>
    <item>
      <title>LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072964#M2502</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For the project I am working on we are using multiple SPI peripherals. I am currently working on a driver that meets up to our abstraction layer written in C++ but I encounter an issue when trying to exchange data on the SPI bus. All measurements are done on the LPC5528 processor and I use FlexComm8 for my SPI interface.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the input of the exchangeBytes function i use the following data:&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;uint8_t dataTx&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;10&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 uint8_t dataRx&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;10&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; i &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;10&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 dataTx&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; i&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 dataRx&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

 System&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;spiFPGA&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;open&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 System&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;spiFPGA&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;exchangeBytes&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;dataTx&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; dataRx&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;10&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 System&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;spiFPGA&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;close&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I read the user manual for the SPI interfaces the FIFO write data register documentation describes:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&lt;EM&gt;Byte, half-word or word writes to FIFOWR will push the data and control bits into the FIFO.&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style="color: black; font-size: 10.0pt;"&gt;&lt;EM&gt;&lt;BR /&gt; &lt;SPAN&gt;&lt;EM&gt;Word writes with the upper half-word of 0, byte writes or half-word writes to FIFOWR will&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt; &lt;SPAN&gt;&lt;EM&gt;push the data and the current control bits, into the FIFO. Word writes with a non-zero&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt; &lt;SPAN&gt;&lt;EM&gt;upper half-word will modify the control bits before pushing them onto the stack.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;The issue I encounter is the unexpected behavior when not always writing the control bits to the FIFO.&lt;/P&gt;&lt;P&gt;The code below shows the blocking exchange function code that is use and which results in a valid SPI transfer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult SpiMasterDriver&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;exchangeBytes&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;in&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;out&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint32_t nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SPI_SUCCESS&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 uint32_t rxCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 uint32_t txCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;rxCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;||&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;txCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;rxCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOSTAT &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; SPI_FIFOSTAT_RXNOTEMPTY_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Check if there is data in the RX FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// There is data in the rx fifo, read the next byte.&lt;/SPAN&gt;
 out&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;rxCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFORD&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;txCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOSTAT &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; SPI_FIFOSTAT_TXNOTFULL_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Check if there is space in the TX FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; txCount&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; config&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; config&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Nothing to do now. Wait for data in the Rx FIFO or an empty space in the tx FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; result&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code above works like a charm because it always writes the control bits. The result on the SPI output signals is&lt;/P&gt;&lt;P&gt;shown in the image blow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="ValidCommunication.png"&gt;&lt;IMG alt="ValidCommunication.png" src="https://community.nxp.com/t5/image/serverpage/image-id/114806i852B0724F7F4A8B6/image-size/large?v=v2&amp;amp;px=999" title="ValidCommunication.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I change the code to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult SpiMasterDriver&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;exchangeBytes&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;in&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;out&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint32_t nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SPI_SUCCESS&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 uint32_t rxCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 uint32_t txCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;rxCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;||&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;txCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;rxCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOSTAT &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; SPI_FIFOSTAT_RXNOTEMPTY_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Check if there is data in the RX FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// There is data in the rx fifo, read the next byte.&lt;/SPAN&gt;
 out&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;rxCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFORD&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;txCount &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&amp;amp;&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOSTAT &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt; SPI_FIFOSTAT_TXNOTFULL_MASK&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Check if there is space in the TX FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; txCount&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;// + config;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; config&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;// Nothing to do now. Wait for data in the Rx FIFO or an empty space in the tx FIFO&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
 &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

 &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; result&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The control bits should not be modified if I am not mistaking and thus the result should be the same. Unfortunately I get an unexpected output signal on the SPI output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="InvalidCommunication.png"&gt;&lt;IMG alt="InvalidCommunication.png" src="https://community.nxp.com/t5/image/serverpage/image-id/114807i3DC4426BA2BA8A9E/image-size/large?v=v2&amp;amp;px=999" title="InvalidCommunication.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first byte is exchanged correctly but from the second byte the data is not correct anymore and even the clock speed seems to be changed which is totally unexpected to me because there is no option for this in the control bits. &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I know I could always add the control bits and forget about the issue but I do not like to keep unexpected behavior in my code and forget about it &lt;IMG class="jive_emoji" src="https://community.nxp.com/images/emojis/1f609.png" /&gt; I would like to know what I am doing wrong.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 14:41:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072964#M2502</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-11-02T14:41:29Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072965#M2503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;In the second figure, the SPI SCK clock changes it's period&amp;nbsp; during the transfer, I never see the phenomenon, it is abnormal.&lt;/P&gt;&lt;P&gt;For the writing&amp;nbsp; FIFOWR register code, I suggest you specify the data width.&lt;/P&gt;&lt;P&gt;For example&lt;/P&gt;&lt;PRE class=""&gt;&lt;CODE&gt;
&lt;/CODE&gt;&lt;PRE class=""&gt;&lt;CODE&gt;
 ports&lt;SPAN class=""&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class=""&gt;-&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class=""&gt;=&lt;/SPAN&gt; (uint16_t)in&lt;SPAN class=""&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class=""&gt;++&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;SPAN class=""&gt;// + config;
Before the code, you have to set up the control halfword of FIFOWR with the data width, and TXSSELx.
Hope it can help you
BR
XiangJun Rong
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;CODE&gt;&lt;SPAN class=""&gt;
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jul 2020 05:40:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072965#M2503</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-07-09T05:40:08Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072966#M2504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello and thanks for the response, unfortunately i tried the casting already and without success. All data width 8, 16, and 32 bit writes give me the same result. I did try the casting to uint8 also but as expected the cast from the input parameter which is of the same type dit not result in a successful session. For the 32 bit word writ i changed the code to&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;uint32_t value &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; value&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I validated with the debugger that the upper half word contains zero's. It seems like the peripheral doesn't take the current configuration bits with the new data.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jul 2020 06:10:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072966#M2504</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-07-09T06:10:34Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072967#M2505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;It appears that you have to write all 32 bits data(control bits and data bits) to the FIFOWR register.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2020 07:01:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072967#M2505</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-07-13T07:01:38Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072968#M2506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok so this is an issue inside the MCU? I think it should be mentioned in the errata sheet if this is the case.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How does this impact the functionality in combination with DMA?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With kind regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2020 12:48:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072968#M2506</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-07-13T12:48:36Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072969#M2507</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok i did some testing on the question "Is the same issue there with the use of a DMA transfer". I expected that the issue is also there when using a DMA transfer because it also uses a memory/register write which should result in the same faulty behaviour. But to be sure is tested it with a dummy data arrey and here are my results:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the input data i used the same data array as in the first implementation but only now a 50 bytes array instead of the 10 bytes i used previously. The code in my exchangeBytes function is now modified to DMA usage and for the Tx transfer is have implemented 2 versions. The first is an byte oriented write action and the second implementation uses a word oriented data transfer. For the word oriented data transfer i copied the input data(uint8_t) to an internal uint32_t array and added the desired configuration bits to each word.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-cpp line-numbers"&gt;&lt;CODE&gt;SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult SpiMasterDriverDMA&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;exchangeBytes&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;in&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint8_t &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;out&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; uint32_t nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SpiResult result &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; SpiMasterBase&lt;SPAN class="operator token"&gt;::&lt;/SPAN&gt;SPI_SUCCESS&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;// Enable the SPI DMA triggers.&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;SPI_EnableTxDMA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;SPI_EnableRxDMA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="token function"&gt;DEBUG_ASSERT&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;TRANSFER_SIZE &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;// Copy the input data from the byte array to an internal word size tx buffer. This is needed to add the config&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;// data to every single byte...&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; i &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; nrOfBytes&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; i&lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        masterTxData&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; in&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; config&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;/******************************************************************************************************************
     * Use the DMA transfer in byte mode. This is totally unsuccessful because not all the control bits are written
     * every time. Probably a bug in the processor peripheral.
     ******************************************************************************************************************/&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;// First write the first data byte + config bits.&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//    ports[PORT].peripheral-&amp;gt;FIFOWR = config + in[0];&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//    uint32_t xferConfTx = DMA_CHANNEL_XFER(0, 1, 0, 0, kDMA_Transfer8BitWidth, kDMA_AddressInterleave1xWidth, kDMA_AddressInterleave0xWidth, nrOfBytes - 1);&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;//    DMA_SubmitChannelTransferParameter(&amp;amp;masterTxHandle, xferConfTx, &amp;amp;in[1], (uint32_t*)&amp;amp;ports[PORT].peripheral-&amp;gt;FIFOWR, NULL);&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;/******************************************************************************************************************
     * Use the DMA transfer in word mode. This results in a successful transfer but unfortunately all the data must
     * be copied from a byte array to a word array with added configuration data to work.
     ******************************************************************************************************************/&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;// Functional configuration with 32 bits array (data + config).&lt;/SPAN&gt;
    uint32_t xferConfTx &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DMA_CHANNEL_XFER&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_Transfer32BitWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_AddressInterleave1xWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_AddressInterleave0xWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; nrOfBytes &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;DMA_SubmitChannelTransferParameter&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterTxHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; xferConfTx&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterTxData&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; NULL&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    uint32_t xferConfRx &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DMA_CHANNEL_XFER&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_Transfer32BitWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_AddressInterleave0xWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; kDMA_AddressInterleave1xWidth&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; nrOfBytes &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;DMA_SubmitChannelTransferParameter&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterRxHandle&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; xferConfRx&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;FIFORD&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterRxData&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; NULL&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;// Start the transfer.&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;DMA_StartTransfer&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterTxHandle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;DMA_StartTransfer&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;masterRxHandle&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;// Wait for the transfer to finish.&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;DMA_ChannelIsActive&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;masterTxHandle&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;base&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; masterTxHandle&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;channel&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;while&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;DMA_ChannelIsActive&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;masterRxHandle&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;base&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; masterRxHandle&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;channel&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="comment token"&gt;// Disable the SPI DMA triggers.&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;SPI_EnableTxDMA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;false&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token function"&gt;SPI_EnableRxDMA&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ports&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;false&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

    &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; result&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Unfortunately the result with the uint8_t transfer was as expected:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="Failure.png"&gt;&lt;IMG alt="Failure.png" src="https://community.nxp.com/t5/image/serverpage/image-id/116291i21DF8266639489E7/image-size/large?v=v2&amp;amp;px=999" title="Failure.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The word oriented transfer gave me the desired result:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="Success.png"&gt;&lt;IMG alt="Success.png" src="https://community.nxp.com/t5/image/serverpage/image-id/116304iECA7C3CE199D9093/image-size/large?v=v2&amp;amp;px=999" title="Success.png" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;While i did manage to create a successful SPI transfer on the high speed SPI port I do have the issue that is only works with the uint32_t/word oriented operations. To do this i have to copy all data from an byte array to a word array and add the configuration data to each word. Although i can communicate on high speeds this way it does impact the performance and memory usage a lot and this is totally undesired...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 14:41:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072969#M2507</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-11-02T14:41:31Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072970#M2508</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE class=""&gt;&lt;CODE&gt;
&lt;/CODE&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;CODE&gt;I tried to use the line simply, 
(uint16_t)ports&lt;SPAN class=""&gt;[&lt;/SPAN&gt;PORT&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;peripheral&lt;SPAN class=""&gt;-&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;FIFOWR &lt;SPAN class=""&gt;=&lt;/SPAN&gt; in&lt;SPAN class=""&gt;[&lt;/SPAN&gt;txCount&lt;SPAN class=""&gt;++&lt;/SPAN&gt;&lt;SPAN class=""&gt;]&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;&lt;SPAN class=""&gt;// + config;
But above line can not pass the compilation.
So I tried to rewrite the structure, I replace the FIFOWR with union so that you can access both the data and control.
Pls have a try.
&lt;EM&gt;/** SPI - Register Layout Typedef */
typedef struct
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_0[1024];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t CFG; /**&amp;lt; SPI Configuration register, offset: 0x400 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t DLY; /**&amp;lt; SPI Delay register, offset: 0x404 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STAT; /**&amp;lt; SPI Status. Some status flags can be cleared by writing a 1 to that bit position., offset: 0x408 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t INTENSET; /**&amp;lt; SPI Interrupt Enable read and Set. A complete value may be read from this register.
&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; Writing a 1 to any implemented bit position causes that bit to be set., offset: 0x40C */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __O uint32_t INTENCLR;&amp;nbsp; /**&amp;lt; SPI Interrupt Enable Clear. Writing a 1 to any implemented bit position causes the
&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; corresponding bit in INTENSET to be cleared., offset: 0x410 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_1[16];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t DIV;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&amp;lt; SPI clock Divider, offset: 0x424 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __I uint32_t INTSTAT; /**&amp;lt; SPI Interrupt Status, offset: 0x428 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_2[2516];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t FIFOCFG;&amp;nbsp; /**&amp;lt; FIFO configuration and enable register., offset: 0xE00 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t FIFOSTAT; /**&amp;lt; FIFO status register., offset: 0xE04 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t FIFOTRIG; /**&amp;lt; FIFO trigger settings for interrupt and DMA request., offset: 0xE08 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_3[4];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t FIFOINTENSET; /**&amp;lt; FIFO interrupt enable set (enable) and read register., offset: 0xE10 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint32_t FIFOINTENCLR; /**&amp;lt; FIFO interrupt enable clear (disable) and read register., offset: 0xE14 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __I uint32_t FIFOINTSTAT;&amp;nbsp;&amp;nbsp; /**&amp;lt; FIFO interrupt status register., offset: 0xE18 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_4[4];


&amp;nbsp;&amp;nbsp;&amp;nbsp; union
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct
&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;__IO uint16_t FIFOWRData;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __IO uint16_t FIFOWRcontrol;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } splitTwo;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __O uint32_t FIFOWR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };

&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_5[12];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __I uint32_t FIFORD; /**&amp;lt; FIFO read data., offset: 0xE30 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_6[12];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __I uint32_t FIFORDNOPOP; /**&amp;lt; FIFO data read with no FIFO pop., offset: 0xE40 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t RESERVED_7[440];
&amp;nbsp;&amp;nbsp;&amp;nbsp; __I uint32_t ID; /**&amp;lt; Peripheral identification register., offset: 0xFFC */
} SPI_Type;
BR
XiangJun Rong
&lt;/EM&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jul 2020 09:37:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072970#M2508</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-07-29T09:37:53Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072971#M2509</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;If you use the hlaf-word access for the SPI FIFOWR register with the code like , do you have any issue?&lt;/P&gt;&lt;P&gt;&amp;nbsp; //base-&amp;gt;FIFOWR = data | control;&lt;/P&gt;&lt;P&gt;SPI_Type *base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;FIFOWR = data; // access the 32 bits FIFOWR with control and data;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;splitTwo.FIFOWRData=0x1234; //access the 16 bits data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;splitTwo.FIFOWRcontrol=0xxxxx; //access the 16 bits control&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 Jul 2020 08:56:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072971#M2509</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-07-30T08:56:16Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072972#M2510</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Unfortunately is have negative results with the proposal for code change wich is unfortunate. Did you have positive results using the union?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Personally i did expect this because is also have negative results when using an 8 bit transfer size with DMA.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to proceed from this point? Is it possible for you to provide me with a small software project/example that works well?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With kind regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rik&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Aug 2020 15:24:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072972#M2510</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-08-04T15:24:00Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072973#M2511</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;I have tested, but I also got negative result. All the SDK driver writes the base-&amp;gt;FIFOWR with 32 bits instead of 16 bits or 8 bits. I suppose you have to write the register with 32 bits.&lt;/P&gt;&lt;P&gt;It is frustrating result. I will try to use assembly language to write the register, which can define the width of the register.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2020 06:07:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072973#M2511</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-08-17T06:07:55Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072974#M2512</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is unfortunate to hear that you also encounter the same issue instead of just a simple coding error from my side. I don't think that assembly will give you the desired results. As said i encounter the same issue with the use of the DMA controller. Can you please also chack this behaviour? At the moment i have to copy the 8 bit data array to a 32 bit one&amp;nbsp;so i can&amp;nbsp;add the configuration bits. The&amp;nbsp;performance of the high speed SPI peripherel (50MHz) is overall extremely decreased by this action.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2020 06:37:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072974#M2512</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-08-17T06:37:32Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072975#M2513</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;sorry for the delay.&lt;/P&gt;&lt;P&gt;I have checked the SDK package, it has the example for both SPI plus DMA, it uses Byte transfer.&lt;/P&gt;&lt;P&gt;You can download SDK package from the link:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-software-development-kit-sdk:MCUXpresso-SDK" title="https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-software-development-kit-sdk:MCUXpresso-SDK"&gt;MCUXpresso SDK | Software Development for Kinetis, LPC, and i.MX MCUs | NXP&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After you download the SDK package based on the LPC55S28, you can try to test the code.&lt;/P&gt;&lt;P&gt;anyway, pls have a try.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/110677iA9E61233F5AD5AC6/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2020 09:42:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072975#M2513</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-08-26T09:42:40Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072976#M2514</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;I just tested the lpcxpresso55s69_spi_dma_b2b_transfer_master project based on my lpc55s69-EVK board, I close the pin PIO0_19 to PIO0_20 with a resistor on the EVK, it works fine. As the following fig, the SPI transfer length is Byte.&lt;/P&gt;&lt;P&gt;Maybe our initialization code for SPI is incorrect somewhere.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/110882i2D6C89013FF64823/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Aug 2020 08:35:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072976#M2514</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-08-27T08:35:12Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072977#M2515</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the test result, Can you easilly execute this test on SPI port 8, The high speed peripheral that i use?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the mean time I will try to check if the normal flexcomm spi (0 to 7) peripherals do work as expected on our hardware board.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Aug 2020 08:39:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072977#M2515</guid>
      <dc:creator>fruitmans</dc:creator>
      <dc:date>2020-08-27T08:39:39Z</dc:date>
    </item>
    <item>
      <title>Re: LPC5528 SPI FIFOWR controlbit issue</title>
      <link>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072978#M2516</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Rik,&lt;/P&gt;&lt;P&gt;I have tested the SPI8 module with SPI master plus DMA with Byte transfer on MY LPC55S69-EVK, it is okay.&lt;/P&gt;&lt;P&gt;i copy the result here.&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;XiangJun Rong&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/111471i09E3E81861B2CF13/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Aug 2020 05:21:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCUXpresso-SDK/LPC5528-SPI-FIFOWR-controlbit-issue/m-p/1072978#M2516</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2020-08-28T05:21:31Z</dc:date>
    </item>
  </channel>
</rss>

