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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2827|回復: 1
打印 上一主題 下一主題
收起左側

關于AD7193的驅動 stm8s單片機SPI代碼編寫問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:610433 發表于 2019-10-10 16:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下了官方的驅動,但是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;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:282850 發表于 2019-10-11 09:23 | 只看該作者
同系列的SPI都會不同,如MSP430的F149 與F2553程序差異大,你問題又沒說清,沒人能幫你
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表