<?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>Sensors中的主题 Re: FXOS8700 SPI question</title>
    <link>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017587#M8618</link>
    <description>&lt;P&gt;During the reset process of FXOS8700, I set SA0 to a high impedance state. After resetting, int1 was detected and a reset signal can be detected. Is there any way to detect if FXOS8700 has switched to SPI mode?&lt;/P&gt;</description>
    <pubDate>Fri, 20 Dec 2024 03:35:24 GMT</pubDate>
    <dc:creator>warr1</dc:creator>
    <dc:date>2024-12-20T03:35:24Z</dc:date>
    <item>
      <title>FXOS8700 SPI question</title>
      <link>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017186#M8612</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I am want to use the FXOS8700 in SPI mode. I set the parameters of the SPI bus according to the FXOS8700 data sheet.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In order to get the FXOS into SPI mode, I tri-state the MISO pin before toggling the reset pin, and waiting the required time for the auto detection circuit to put the device into SPI mode.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;void FXOS8700_GPIO_Init(void)&lt;BR /&gt;{&lt;BR /&gt;GPIO_InitTypeDef GPIO_InitStruct = {0};&lt;BR /&gt;__HAL_RCC_GPIOA_CLK_ENABLE();&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pin&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_PIN_MISO;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Mode&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_MODE_INPUT;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pull&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_NOPULL;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Speed&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_SPEED_FREQ_LOW;&lt;BR /&gt;&lt;/SPAN&gt;HAL_GPIO_Init(GPIOA, &amp;amp;&lt;SPAN&gt;GPIO_InitStruct&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;SPAN&gt;HAL_Delay(10);&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pin&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_PIN_RST;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Mode&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_MODE_OUTPUT_PP;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Pull&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_NOPULL;&lt;BR /&gt;&lt;/SPAN&gt;GPIO_InitStruct&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Speed&lt;/SPAN&gt;&lt;SPAN&gt; = GPIO_SPEED_FREQ_LOW;&lt;BR /&gt;&lt;/SPAN&gt;HAL_GPIO_Init(GPIOA, &amp;amp;&lt;SPAN&gt;GPIO_InitStruct&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;HAL_GPIO_WritePin(GPIOA, GPIO_PIN_RST, &lt;SPAN&gt;GPIO_PIN_SET&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;HAL_Delay(1);&lt;BR /&gt;HAL_GPIO_WritePin(GPIOA, GPIO_PIN_RST, &lt;SPAN&gt;GPIO_PIN_RESET&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;BR /&gt;&lt;/SPAN&gt;HAL_Delay(1);&lt;BR /&gt;&lt;SPAN&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&amp;nbsp;Next, initialize the SPI bus.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;void MX_SPI1_Init(void)&lt;BR /&gt;&lt;/SPAN&gt;{&lt;BR /&gt;hspi1.&lt;SPAN&gt;Instance&lt;/SPAN&gt;&lt;SPAN&gt; = SPI1;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Mode&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_MODE_MASTER;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Direction&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_DIRECTION_2LINES;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;DataSize&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_DATASIZE_8BIT;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CLKPolarity&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_POLARITY_LOW;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CLKPhase&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_PHASE_1EDGE;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;NSS&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_NSS_SOFT;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;BaudRatePrescaler&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_BAUDRATEPRESCALER_128;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;FirstBit&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_FIRSTBIT_MSB;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;TIMode&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_TIMODE_DISABLE;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CRCCalculation&lt;/SPAN&gt;&lt;SPAN&gt; = SPI_CRCCALCULATION_DISABLE;&lt;BR /&gt;&lt;/SPAN&gt;hspi1.&lt;SPAN&gt;Init&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;CRCPolynomial&lt;/SPAN&gt;&lt;SPAN&gt; = 10;&lt;BR /&gt;&lt;/SPAN&gt;if&lt;SPAN&gt; (HAL_SPI_Init(&amp;amp;hspi1) != &lt;/SPAN&gt;&lt;SPAN&gt;HAL_OK&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;/SPAN&gt;{&lt;BR /&gt;Error_Handler();&lt;BR /&gt;}&lt;BR /&gt;}&lt;/PRE&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;My STM32 only connects to the FXOS8700. Therefore, the cs_b of FXOS8700 is directly grounded. During the reading process, cs_b remains at a low voltage, so it is not operated in the code. I then attempt to read the WHO_AM_I register and get the value 0xff instead of 0xff which is what I would expect. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;Below is the code I am using to reset the device and read the WHO_AM_I register:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;unsigned char FXOS8700CQ_ReadRegister(uint8_t RegisterAddress)&lt;BR /&gt;&lt;/SPAN&gt;{&lt;BR /&gt;uint8_t&lt;SPAN&gt; tx_data[3];&lt;BR /&gt;&lt;/SPAN&gt;unsigned &lt;SPAN&gt;char&lt;/SPAN&gt;&lt;SPAN&gt; rx_data[3];&lt;BR /&gt;&lt;/SPAN&gt;tx_data[0] = (RegisterAddress &amp;amp; 0x7F);&lt;BR /&gt;tx_data[1] = (RegisterAddress &amp;amp; 0x80);&lt;BR /&gt;tx_data[2] = 0x00;&lt;BR /&gt;if&lt;SPAN&gt; (HAL_SPI_TransmitReceive(&amp;amp;hspi1, tx_data, rx_data, 3, HAL_MAX_DELAY) != &lt;/SPAN&gt;&lt;SPAN&gt;HAL_OK&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;/SPAN&gt;{&lt;BR /&gt;return&lt;SPAN&gt; 0x01; &lt;BR /&gt;&lt;/SPAN&gt;}&lt;BR /&gt;return&lt;SPAN&gt; rx_data;&lt;BR /&gt;&lt;/SPAN&gt;}&lt;/PRE&gt;&lt;P&gt;The final result is below：&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;rx_data&lt;/SPAN&gt;[0] = 0xFF&lt;BR /&gt;&lt;SPAN&gt;rx_data&lt;/SPAN&gt;[1] = 0xFF&lt;BR /&gt;&lt;SPAN&gt;rx_data&lt;/SPAN&gt;[2] = 0xFF&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anybody else getting this problem?&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 03 Feb 2026 21:22:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017186#M8612</guid>
      <dc:creator>warr1</dc:creator>
      <dc:date>2026-02-03T21:22:32Z</dc:date>
    </item>
    <item>
      <title>Re: FXOS8700 SPI question</title>
      <link>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017342#M8613</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;First of all, please note that the FXOS8700CQ is EOL and not recommended for new designs.&lt;/P&gt;
&lt;P&gt;Based on description, the first thing I would recommend to try is to&amp;nbsp;toggle the CS_B pin between low and high to latch data during SPI communication.&amp;nbsp;Grounding the CS_B pin directly may not work.&lt;/P&gt;
&lt;P&gt;Next, as I am not familiar with STM MCUs, I cannot check your SPI initialization. Please double check that&amp;nbsp;it matches the FXOS8700 requirements:&lt;BR /&gt;Clock Polarity (CPOL): 0 (idle low)&lt;BR /&gt;Clock Phase (CPHA): 0 (data captured on the leading edge of the clock)&lt;/P&gt;
&lt;P&gt;Your read a register seems to be correct.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have a logic analyzer or an oscilloscope to see what is going on the bus?&lt;/P&gt;
&lt;P&gt;BRs, Tomas&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 19 Dec 2024 16:37:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017342#M8613</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2024-12-19T16:37:52Z</dc:date>
    </item>
    <item>
      <title>Re: FXOS8700 SPI question</title>
      <link>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017580#M8617</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi Tomas,I have revised CS_S according to your suggestion, and now it is completely controlled by the MCU.&amp;nbsp;I still haven't received the correct signal yet.&amp;nbsp;&lt;/SPAN&gt;I captured the signal through a logic analyzer as follows:&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1734664688299.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/316786i3F7EDCA246C8269B/image-size/large?v=v2&amp;amp;px=999" role="button" title="1734664688299.png" alt="1734664688299.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Dec 2024 03:21:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017580#M8617</guid>
      <dc:creator>warr1</dc:creator>
      <dc:date>2024-12-20T03:21:19Z</dc:date>
    </item>
    <item>
      <title>Re: FXOS8700 SPI question</title>
      <link>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017587#M8618</link>
      <description>&lt;P&gt;During the reset process of FXOS8700, I set SA0 to a high impedance state. After resetting, int1 was detected and a reset signal can be detected. Is there any way to detect if FXOS8700 has switched to SPI mode?&lt;/P&gt;</description>
      <pubDate>Fri, 20 Dec 2024 03:35:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/FXOS8700-SPI-question/m-p/2017587#M8618</guid>
      <dc:creator>warr1</dc:creator>
      <dc:date>2024-12-20T03:35:24Z</dc:date>
    </item>
  </channel>
</rss>

