找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1965|回复: 0
打印 上一主题 下一主题
收起左侧

stm8s单片机 SPI驱动一直卡住 调不出来 求助

[复制链接]
跳转到指定楼层
楼主
ID:610433 发表于 2019-10-14 17:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是我的AD7193 spi主机模式驱动(stm8s)
一直停在RDY口,就是MISO复用,一直不拉低,死循环
我怀疑是spi读写没写好,还有就是spi硬件调试的时候,gpio口需要设置嘛?
求看一看,找出原因

#define MISO_STATE             GPIO_ReadInputPin(GPIOC, GPIO_PIN_7)

#define PMOD1_CS_LOW           GPIO_WriteLow(GPIOE, GPIO_PIN_5)

#define PMOD1_CS_HIGH          GPIO_WriteHigh(GPIOE, GPIO_PIN_5)

unsigned char SPI_Init7193(unsigned char lsbFirst, unsigned long clockFreq, unsigned char clockPol, unsigned char clockEdg)
{
  SPI_DeInit();
  SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_16, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_1EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x07);
  SPI_Cmd(ENABLE);


  GPIO_Init(GPIOE, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);     //SPI CS/NSS
  GPIO_WriteLow(GPIOE, GPIO_PIN_5);

  return 1;
}



unsigned char SPI_Write7193(unsigned char slaveDeviceId, unsigned char* data, unsigned char n)
{
   unsigned char byte = 0;
   unsigned char read = 0;

   for(byte = 0;byte < n;byte++)
   {
     while(SPI_SR_TXE==0);  
     SPI_SendData(data[byte]);  
     while(SPI_SR_RXNE==0);     
     read = SPI_ReceiveData();
   }

   return n;
}

unsigned char SPI_Read7193(unsigned char slaveDeviceId, unsigned char* data, unsigned char n)
{
   unsigned char byte = 0;

   for(byte = 0;byte < n;byte++)
   {
     while(SPI_SR_TXE==0);  
     SPI_SendData(data[byte]);  
     while(SPI_SR_RXNE==0);     
     data[byte] = SPI_ReceiveData();
   }

   return n;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表