FXOS8700 SPI Woes

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

FXOS8700 SPI Woes

跳至解决方案
3,450 次查看
warren1
Contributor I

I am attempting to use the FXOS8700 in SPI mode due to the faster read / write times associated with SPI (higher possible bus speed). I have set up the SPI bus to run with the following parameters which are consistent with the FXOS8700 data sheet:

CLK: 1 MHz

Order: MSB First

CPOL: Rising/Falling

CPHA: Sample/Setup

I have verified the above settings on an oscilloscope so I know that the bus is set up correctly. 

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. I then attempt to read the WHO_AM_I register and get the value 0x1e instead of 0xc7 which is what I would expect. Below is the code I am using to reset the device and read the WHO_AM_I register:

#define FXOS_MISO   26
#define FXOS_CS     11
#define FXOS_RST    3
void FXOSSPI()
{
    // Tri-state MISO
    pinMode( FXOS_MISO, TRI_STATE );
    delay( 10 );
    // Reset the FXOS
    digitalWrite( FXOS_RST, HIGH );
    digitalWrite( FXOS_RST, LOW );
    delay( 1 );
    // Set up the bus
    SPISettings _settings = SPISettings( 1000000, MSBFIRST, SPI_MODE0 );
    SPI1.beginTransaction( _settings );
    // Read WHO_AM_I
    uint8_t tx[3] = { ( 0x0D >> 1 ) & 0xFF, ( 0x0D << 7 ) & 0xFF , 0xFF };
    digitalWrite( FXOS_CS, LOW );
    for( uint8_t i = 0; i < 3; i++)
        buff[i] = SPI1.transfer( tx[i] );
    digitalWrite( FXOS_CS, HIGH );
    SPI1.end();
}

After I run that function I check the contents of buff using a break point and ICD, the contents of buff are:

buff[0] = 0xFF

buff[1] = 0xFF

buff[2] = 0x1E

Obviously, bytes 0, and 1 are DC because we are writing the R/W bits and the register address, but byte 2 should be 0xC7.  Not really sure what is going on here, I have looked at this many times under a scope, verified SPI register settings via ICD, slowed down the clock rate, etc. Still get the same results. Anybody else getting this problem? The only thing I can think of now is that my FXOS is damaged or something.

标签 (1)
标记 (1)
0 项奖励
1 解答
3,155 次查看
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Warren,

I think I found where the problem is. You are not addressing the WHO_AM_I register (0x0D) correctly.

As shown in the datasheet:

 

Byte 0: R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0]

Byte 1: ADDR[7], X, X, X, X, X, X, X

 

In your case tx[0] = ( 0x0D >> 1 ) & 0xFF while the correct way is tx[0] = 0x0D & 0x7F. Similarly tx[1] = ( 0x0D << 7 ) & 0xFF while the correct form is tx[1] = 0x0D & 0x80.

 

Here is my complete read a register function:

/******************************************************************************
* Read a byte from the FXOS8700CQ
* 
* Byte 0: 0,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0]
* Byte 1: ADDR[7],0,0,0,0,0,0,0
* Byte 2: 0,0,0,0,0,0,0,0
******************************************************************************/ 
unsigned char FXOS8700CQ_ReadRegister(unsigned char RegisterAddress)
{
 unsigned char i;
 
 CS_Enable;
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x7F & RegisterAddress;
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D; 
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x80 & RegisterAddress;
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D;
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x00; // Dummy byte
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D;
CS_Disable;
 
 return i;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

 

I hope it helps.

Best regards,

Tomas 

在原帖中查看解决方案

3 回复数
3,155 次查看
warren1
Contributor I

Hi Tomas,

I can't believe I missed that! Just goes to show the value of having a fresh set of eyes on your code. Thank you, everything is working as planned now.

- Warren

0 项奖励
3,155 次查看
TomasVaverka
NXP TechSupport
NXP TechSupport

You are very welcome, Warren.

Very glad to hear it is working now!

Best regards,

Tomas

0 项奖励
3,156 次查看
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Warren,

I think I found where the problem is. You are not addressing the WHO_AM_I register (0x0D) correctly.

As shown in the datasheet:

 

Byte 0: R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0]

Byte 1: ADDR[7], X, X, X, X, X, X, X

 

In your case tx[0] = ( 0x0D >> 1 ) & 0xFF while the correct way is tx[0] = 0x0D & 0x7F. Similarly tx[1] = ( 0x0D << 7 ) & 0xFF while the correct form is tx[1] = 0x0D & 0x80.

 

Here is my complete read a register function:

/******************************************************************************
* Read a byte from the FXOS8700CQ
* 
* Byte 0: 0,ADDR[6],ADDR[5],ADDR[4],ADDR[3],ADDR[2],ADDR[1],ADDR[0]
* Byte 1: ADDR[7],0,0,0,0,0,0,0
* Byte 2: 0,0,0,0,0,0,0,0
******************************************************************************/ 
unsigned char FXOS8700CQ_ReadRegister(unsigned char RegisterAddress)
{
 unsigned char i;
 
 CS_Enable;
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x7F & RegisterAddress;
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D; 
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x80 & RegisterAddress;
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D;
 
 while (!(SPI0_S & SPI_S_SPTEF_MASK));
 SPI0_D = 0x00; // Dummy byte
 while (!(SPI0_S & SPI_S_SPRF_MASK));
 i = SPI0_D;
CS_Disable;
 
 return i;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

 

I hope it helps.

Best regards,

Tomas 

%3CLINGO-SUB%20id%3D%22lingo-sub-821249%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFXOS8700%20SPI%20%E6%95%85%E9%9A%9C%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-821249%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E5%B0%9D%E8%AF%95%E5%9C%A8%20SPI%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E4%BD%BF%E7%94%A8%20FXOS8700%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%B8%8E%20SPI%20%E7%9B%B8%E5%85%B3%E7%9A%84%E8%AF%BB%2F%E5%86%99%E6%97%B6%E9%97%B4%E6%9B%B4%E7%9F%AD%EF%BC%88%E5%8F%AF%E8%83%BD%E7%9A%84%E6%80%BB%E7%BA%BF%E9%80%9F%E5%BA%A6%E6%9B%B4%E9%AB%98%EF%BC%89%E3%80%82%E6%88%91%E5%B7%B2%E5%B0%86%20SPI%20%E6%80%BB%E7%BA%BF%E8%AE%BE%E7%BD%AE%E4%B8%BA%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E5%8F%82%E6%95%B0%E8%BF%90%E8%A1%8C%EF%BC%8C%E8%BF%99%E4%BA%9B%E5%8F%82%E6%95%B0%E4%B8%8E%20FXOS8700%20%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C%E4%B8%80%E8%87%B4%EF%BC%9A%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3ECLK%3A%201%20MHz%3C%2FP%3E%3CP%3E%E8%AE%A2%E8%B4%AD%EF%BC%9AMSB%20%E4%BC%98%E5%85%88%3C%2FP%3E%3CP%3ECPOL%EF%BC%9A%E4%B8%8A%E5%8D%87%2F%E4%B8%8B%E9%99%8D%3C%2FP%3E%3CP%3ECPHA%EF%BC%9A%E6%A0%B7%E6%9C%AC%2F%E8%AE%BE%E7%BD%AE%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%B7%B2%E7%BB%8F%E5%9C%A8%E7%A4%BA%E6%B3%A2%E5%99%A8%E4%B8%8A%E9%AA%8C%E8%AF%81%E4%BA%86%E4%B8%8A%E8%BF%B0%E8%AE%BE%E7%BD%AE%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%88%91%E7%9F%A5%E9%81%93%E6%80%BB%E7%BA%BF%E8%AE%BE%E7%BD%AE%E6%AD%A3%E7%A1%AE%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%B8%BA%E4%BA%86%E8%AE%A9FXOS%E8%BF%9B%E5%85%A5SPI%E6%A8%A1%E5%BC%8F%EF%BC%8C%E6%88%91%E5%9C%A8%E5%88%87%E6%8D%A2RESET%E5%BC%95%E8%84%9A%E4%B9%8B%E5%89%8D%E5%AF%B9MISO%E5%BC%95%E8%84%9A%E8%BF%9B%E8%A1%8C%E4%B8%89%E6%80%81%E5%8C%96%EF%BC%8C%E5%B9%B6%E7%AD%89%E5%BE%85%E8%87%AA%E5%8A%A8%E6%A3%80%E6%B5%8B%E7%94%B5%E8%B7%AF%E5%B0%86%E8%AE%BE%E5%A4%87%E7%BD%AE%E4%BA%8ESPI%E6%A8%A1%E5%BC%8F%E6%89%80%E9%9C%80%E7%9A%84%E6%97%B6%E9%97%B4%E3%80%82%E7%84%B6%E5%90%8E%EF%BC%8C%E6%88%91%E5%B0%9D%E8%AF%95%E8%AF%BB%E5%8F%96%20WHO_AM_I%20%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%8C%E5%BE%97%E5%88%B0%E7%9A%84%E5%80%BC%E6%98%AF%200x1e%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%88%91%E6%89%80%E6%9C%9F%E6%9C%9B%E7%9A%84%200xc7%E3%80%82%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E7%94%A8%E6%9D%A5%20RESET%20%E8%AE%BE%E5%A4%87%E5%92%8C%E8%AF%BB%E5%8F%96%20WHO_AM_I%20%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CDIV%3E%3CDIV%3E%23define%20FXOS_MISO%2026%3CBR%20%2F%3E%23define%20FXOS_CS%2011%3CBR%20%2F%3E%23define%20FXOS_RST%203%3CBR%20%2F%3Evoid%20FXOSSPI()%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20%2F%2F%20%E4%B8%89%E6%80%81%20MISO%3CBR%20%2F%3E%20pinMode(%20FXOS_MISO%2C%20TRI_STATE%20)%3B%3CBR%20%2F%3E%20delay(%2010%20)%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%20%3C%2FDIV%3E%3CDIV%3E%2F%2FRESET%20FXOS%20%3CBR%20%2F%3E%20DigitalWrite%20(FXOS_RST%2C%20HIGH)%3B%20d%20%3CBR%20%2F%3E%20igitalWrite%20(FXOS_RST%2C%20LOW)%3B%20%E5%BB%B6%E8%BF%9F%20(1)%3B%20%3CBR%20%2F%3E%3C%2FDIV%3E%3CDIV%3E%20%3C%2FDIV%3E%3CDIV%3E%2F%2F%E8%AE%BE%E7%BD%AE%E6%80%BB%E7%BA%BF%20spiSettings%20_settings%20%3D%20%3CBR%20%2F%3E%20spiSettings%20(1000000%2C%20MSBFIRST%2C%20SPI_MODE0)%3B%20spi1.beginTransaction%20(%3CBR%20%2F%3E_settings%EF%BC%89%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%20%20%20%20%2F%2F%20%E8%AF%BB%E5%8F%96%20WHO_AM_I%3CBR%20%2F%3E%20uint8_t%20tx%5B3%5D%20%3D%20%7B%20(%200x0D%26gt%3B%26gt%3B%201%20)%26amp%3B%200xFF%2C%20(%200x0D%26lt%3B%26lt%3B%207%20)%26amp%3B%200xFF%20%2C%200xFF%20%7D%3B%3CBR%20%2F%3E%20digitalWrite(%20FXOS_CS%2C%20LOW%20)%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%20%20%20%20for(%20uint8_t%20i%20%3D%200%3B%20i%26lt%3B%203%3B%20i%2B%2B)%3CBR%20%2F%3E%20buff%5Bi%5D%20%3D%20SPI1.transfer(tx%5Bi%5D%20%EF%BC%89%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%20%20%20%20digitalWrite(%20FXOS_CS%2C%20HIGH%20)%3B%3CBR%20%2F%3E%20SPI1.end()%EF%BC%9B%3CBR%20%2F%3E%7D%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E8%BF%90%E8%A1%8C%E8%AF%A5%E5%87%BD%E6%95%B0%E5%90%8E%EF%BC%8C%E6%88%91%E4%BD%BF%E7%94%A8%E6%96%AD%E7%82%B9%E5%92%8C%20ICD%20%E6%A3%80%E6%9F%A5%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%8C%E7%BC%93%E5%86%B2%E5%8C%BA%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AF%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%E7%BC%93%E5%86%B2%E5%8C%BA%5B0%5D%20%3D%200xFF%3C%2FP%3E%3CP%3E%E7%BC%93%E5%86%B2%E5%8C%BA%5B1%5D%20%3D%200xFF%3C%2FP%3E%3CP%3E%E7%BC%93%E5%86%B2%E5%8C%BA%5B2%5D%20%3D%200x1E%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%98%BE%E7%84%B6%EF%BC%8C%E5%AD%97%E8%8A%82%200%20%E5%92%8C%201%20%E6%98%AF%20DC%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%88%91%E4%BB%AC%E6%AD%A3%E5%9C%A8%E5%86%99%E5%85%A5%20R%2FW%20%E4%BD%8D%E5%92%8C%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%EF%BC%8C%E4%BD%86%E5%AD%97%E8%8A%82%202%20%E5%BA%94%E8%AF%A5%E6%98%AF%200xC7%E3%80%82%E6%88%91%E5%9C%A8%E7%A4%BA%E6%B3%A2%E5%99%A8%E4%B8%8B%E6%9F%A5%E7%9C%8B%E4%BA%86%E5%BE%88%E5%A4%9A%E6%AC%A1%EF%BC%8C%E9%80%9A%E8%BF%87%20ICD%20%E9%AA%8C%E8%AF%81%E4%BA%86%20SPI%20%E5%AF%84%E5%AD%98%E5%99%A8%E7%9A%84%E8%AE%BE%E7%BD%AE%EF%BC%8C%E5%B9%B6%E9%99%8D%E4%BD%8E%E4%BA%86%E6%97%B6%E9%92%9F%E9%A2%91%E7%8E%87%E7%AD%89%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%A4%AA%E6%B8%85%E6%A5%9A%E8%BF%99%E6%98%AF%E6%80%8E%E4%B9%88%E5%9B%9E%E4%BA%8B%E3%80%82%E7%BB%93%E6%9E%9C%E8%BF%98%E6%98%AF%E4%B8%80%E6%A0%B7%E3%80%82%E8%BF%98%E6%9C%89%E4%BA%BA%E9%81%87%E5%88%B0%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E5%90%97%EF%BC%9F%E6%88%91%E7%8E%B0%E5%9C%A8%E5%94%AF%E4%B8%80%E8%83%BD%E6%83%B3%E5%88%B0%E7%9A%84%E6%98%AF%EF%BC%8C%E6%88%91%E7%9A%84%20FXOS%20%E6%8D%9F%E5%9D%8F%E4%BA%86%E8%BF%98%E6%98%AF%E6%80%8E%E4%B9%88%E4%BA%86%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-821249%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E7%A3%81%E5%8A%9B%E4%BC%A0%E6%84%9F%E5%99%A8%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-821252%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXOS8700%20SPI%20Woes%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-821252%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E4%B8%8D%E5%AE%A2%E6%B0%94%EF%BC%8C%E6%B2%83%E4%BC%A6%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%BE%88%E9%AB%98%E5%85%B4%E5%90%AC%E5%88%B0%E5%AE%83%E7%8E%B0%E5%9C%A8%E8%83%BD%E5%B7%A5%E4%BD%9C%E4%BA%86%EF%BC%81%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3E%E6%89%98%E9%A9%AC%E6%96%AF%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-821251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXOS8700%20SPI%20Woes%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-821251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%97%A8%EF%BC%8C%E6%89%98%E9%A9%AC%E6%96%AF%E3%80%81%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%88%91%E5%B1%85%E7%84%B6%E9%94%99%E8%BF%87%E4%BA%86%EF%BC%81%E8%BF%99%E6%81%B0%E6%81%B0%E8%AF%B4%E6%98%8E%E4%BA%86%E7%94%A8%E6%96%B0%E7%9C%BC%E5%85%89%E7%9C%8B%E5%BE%85%E4%BB%A3%E7%A0%81%E7%9A%84%E4%BB%B7%E5%80%BC%E3%80%82%E8%B0%A2%E8%B0%A2%EF%BC%8C%E7%8E%B0%E5%9C%A8%E4%B8%80%E5%88%87%E9%83%BD%E6%8C%89%E8%AE%A1%E5%88%92%E8%BF%9B%E8%A1%8C%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E-%20%E6%B2%83%E4%BC%A6%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-821250%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FXOS8700%20SPI%20Woes%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-821250%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%97%A8%EF%BC%8C%E6%B2%83%E4%BC%A6%E3%80%81%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%88%91%E6%83%B3%E6%88%91%E6%89%BE%E5%88%B0%E9%97%AE%E9%A2%98%E6%89%80%E5%9C%A8%E4%BA%86%E3%80%82%E6%82%A8%E6%B2%A1%E6%9C%89%E6%AD%A3%E7%A1%AE%E5%AF%BB%E5%9D%80%20WHO_AM_I%20%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%880x0D%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%A6%82%E6%95%B0%E6%8D%AE%E8%A1%A8%E6%89%80%E7%A4%BA%EF%BC%9A%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E5%AD%97%E8%8A%82%200%EF%BC%9AR%2FW%E3%80%81ADDR%20%5B6%5D%E3%80%81ADDR%20%5B5%5D%E3%80%81ADDR%20%5B4%5D%E3%80%81ADDR%20%5B3%5D%E3%80%81ADDR%20%5B2%5D%E3%80%81ADDR%20%5B1%5D%E3%80%81ADDR%20%5B1%5D%E3%80%81ADDR%20%5B0%5D%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%2351626f%3B%20background-color%3A%20%23ffffff%3B%22%3E%E5%AD%97%E8%8A%82%201%EF%BC%9AADDR%20%5B7%5D%E3%80%81X%E3%80%81X%E3%80%81X%E3%80%81X%E3%80%81X%E3%80%81X%E3%80%81X%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E5%9C%A8%E4%BD%A0%E7%9A%84%E4%BE%8B%E5%AD%90%E4%B8%AD%EF%BC%8Ctx%5B0%5D%20%3D%20(%200x0D%26gt%3B%26gt%3B%201%20)%26amp%3B%200xFF%EF%BC%8C%E8%80%8C%E6%AD%A3%E7%A1%AE%E7%9A%84%E6%96%B9%E6%B3%95%E6%98%AF%3CSTRONG%3Etx%5B0%5D%20%3D%200x0D%26amp%3B%200x7F%3C%2FSTRONG%3E%E3%80%82%E7%B1%BB%E4%BC%BC%E5%9C%B0%EF%BC%8Ctx%5B1%5D%20%3D%20(%200x0D%26lt%3B%26lt%3B%207%20)%26amp%3B%200xFF%EF%BC%8C%E8%80%8C%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%BD%A2%E5%BC%8F%E6%98%AF%3CSTRONG%3Etx%5B1%5D%20%3D%200x0D%26amp%3B%200x80%3C%2FSTRONG%3E%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E4%B8%8B%E9%9D%A2%E6%98%AF%E6%88%91%E5%AE%8C%E6%95%B4%E7%9A%84%E8%AF%BB%E5%8F%96%E5%AF%84%E5%AD%98%E5%99%A8%E5%8A%9F%E8%83%BD%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20class%3D%22language-c%20line-numbers%22%3E%3CCODE%20translate%3D%22no%22%3E%3CSPAN%20class%3D%22comment%20token%22%3E%2F******************************************************************************%0A*%20Read%20a%20byte%20from%20the%20FXOS8700CQ%0A*%20%0A*%20Byte%200%3A%200%2CADDR%5B6%5D%2CADDR%5B5%5D%2CADDR%5B4%5D%2CADDR%5B3%5D%2CADDR%5B2%5D%2CADDR%5B1%5D%2CADDR%5B0%5D%0A*%20Byte%201%3A%20ADDR%5B7%5D%2C0%2C0%2C0%2C0%2C0%2C0%2C0%0A*%20Byte%202%3A%200%2C0%2C0%2C0%2C0%2C0%2C0%2C0%0A******************************************************************************%2F%3C%2FSPAN%3E%20%0A%3CSPAN%20class%3D%22keyword%20token%22%3Eunsigned%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22keyword%20token%22%3Echar%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22token%20function%22%3EFXOS8700CQ_ReadRegister%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22keyword%20token%22%3Eunsigned%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22keyword%20token%22%3Echar%3C%2FSPAN%3E%20RegisterAddress%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7B%3C%2FSPAN%3E%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Eunsigned%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22keyword%20token%22%3Echar%3C%2FSPAN%3E%20i%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%0A%20CS_Enable%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPTEF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20SPI0_D%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0x7F%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20RegisterAddress%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPRF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20i%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20SPI0_D%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%20%0A%20%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPTEF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20SPI0_D%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0x80%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20RegisterAddress%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPRF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20i%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20SPI0_D%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPTEF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20SPI0_D%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22number%20token%22%3E0x00%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22comment%20token%22%3E%2F%2F%20Dummy%20byte%3C%2FSPAN%3E%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ewhile%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3E%3CSPAN%20class%3D%22operator%20token%22%3E!%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E(%3C%2FSPAN%3ESPI0_S%20%3CSPAN%20class%3D%22operator%20token%22%3E%26amp%3B%3C%2FSPAN%3E%20SPI_S_SPRF_MASK%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E)%3C%2FSPAN%3E%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20i%20%3CSPAN%20class%3D%22operator%20token%22%3E%3D%3C%2FSPAN%3E%20SPI0_D%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0ACS_Disable%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%20%0A%20%3CSPAN%20class%3D%22keyword%20token%22%3Ereturn%3C%2FSPAN%3E%20i%3CSPAN%20class%3D%22punctuation%20token%22%3E%3B%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22punctuation%20token%22%3E%7D%3C%2FSPAN%3E%3CSPAN%20class%3D%22line-numbers-rows%22%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3CSPAN%3E%E2%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E5%B8%8C%E6%9C%9B%E5%AF%B9%E6%82%A8%E6%9C%89%E6%89%80%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3E%E6%89%98%E9%A9%AC%E6%96%AF%20%3C%2FP%3E%3C%2FLINGO-BODY%3E