欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于AD7193的驅動 stm8s單片機SPI代碼編寫問題 [打印本頁]

作者: tyx623521553    時間: 2019-10-10 16:59
標題: 關于AD7193的驅動 stm8s單片機SPI代碼編寫問題
下了官方的驅動,但是spi初始化以及讀取自己寫的,出現了問題,關于spi不太懂他的步驟看一下我哪里寫錯了?

unsigned char SPI_Read7193(unsigned char slaveDeviceId,
                       unsigned char* data,
                       unsigned char bytesNumber)
{
  unsigned char byte = 0;
  if(slaveDeviceId == AD7193_SLAVE_ID)PMOD1_CS_LOW;

  for(byte = 0; byte < bytesNumber; byte++)
  {
    while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET);
    *data++ = SPI_ReceiveData();

  }
  if(slaveDeviceId == AD7193_SLAVE_ID)PMOD1_CS_HIGH;

  return bytesNumber;
}


unsigned char SPI_Write7193(unsigned char slaveDeviceId,
                        unsigned char* data,
                        unsigned char bytesNumber)
{
  unsigned char byte = 0;
  if(slaveDeviceId == AD7193_SLAVE_ID)PMOD1_CS_LOW;

  for(byte = 0; byte < bytesNumber; byte++)
  {
    while(SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET);
    SPI_SendData(*data++);

  }
  if(slaveDeviceId == AD7193_SLAVE_ID)PMOD1_CS_HIGH;

  return bytesNumber;
}





這個是官方給的別的單片機的例子,我不太了解這個單片機和寄存器,你們可以參考一下


unsigned char SPI_Read(unsigned char slaveDeviceId,
                       unsigned char* data,
                       unsigned char bytesNumber)
{
    unsigned char byte = 0;

    if(slaveDeviceId == 1)
    {
        PMOD1_CS_LOW;
    }
    if(slaveDeviceId == 2)
    {  
        ST7579_CS_LOW;
    }
    for(byte = 0; byte < bytesNumber; byte++)
    {
        SIO10 = data[byte];
        __no_operation();
        __no_operation();
        while(SSR02 & 0x0040);
        data[byte] = SIO10;
    }
    if(slaveDeviceId == 1)
    {
        PMOD1_CS_HIGH;
    }
    if(slaveDeviceId == 2)
    {
        ST7579_CS_HIGH;
    }

    return bytesNumber;
}

/***************************************************************************//**
* @brief Writes data to SPI.
*
* @param slaveDeviceId - The ID of the selected slave device.
* @param data - Data represents the write buffer.
* @param bytesNumber - Number of bytes to write.
*
* @return Number of written bytes.
*******************************************************************************/
unsigned char SPI_Write(unsigned char slaveDeviceId,
                        unsigned char* data,
                        unsigned char bytesNumber)
{
    unsigned char byte = 0;
    unsigned char read = 0;

    if(slaveDeviceId == 1)
    {
        PMOD1_CS_LOW;
    }
    if(slaveDeviceId == 2)
    {        
        ST7579_CS_LOW;          // Assert CS low
    }
    for(byte = 0; byte < bytesNumber; byte++)
    {
        SIO10 = data[byte];
        __no_operation();
        __no_operation();
        while(SSR02 & 0x0040);
        read = SIO10;
    }
    if(slaveDeviceId == 1)
    {
        PMOD1_CS_HIGH;
    }
    if(slaveDeviceId == 2)
    {
        ST7579_CS_HIGH;         // Assert CS high      
    }

    return bytesNumber;
}



作者: f556    時間: 2019-10-11 09:23
同系列的SPI都會不同,如MSP430的F149 與F2553程序差異大,你問題又沒說清,沒人能幫你




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1