• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Не работает SPI

radius

New member
Пробую через SPI прочитать регистр в микросхеме СС1101. Получаю всегда 0, хотя по осциллографу видно что с микросхемы идут не нулевые данные.
Вот так инициализирую функцию SPI
Код:
void SpiInit(void)
{
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setDataMode(SPI_MODE0);
pinMode(SS_PIN,OUTPUT);
digitalWrite(SS_PIN,HIGH);
pinMode(MISO_PIN,INPUT);
pinMode(MOSI_PIN,OUTPUT);
}
Вот функция чтения регистра:
Код:
/****************************************************************
*FUNCTION NAME:SpiReadReg
*FUNCTION     :CC1101 read data from register
*INPUT        :addr: register address
*OUTPUT       :register value
****************************************************************/
byte SpiReadReg(byte addr)
{
  byte temp, value;
    temp = addr|READ_SINGLE;
   digitalWrite(SS_PIN, LOW);
while(digitalRead(MISO_PIN));
   SPI.transfer(temp);
  value=SPI.transfer(0);
  digitalWrite(SS_PIN, HIGH);
  return value;
}
 
Сверху Снизу