На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА "Электроника и схемотехника"
В дополнение к основным ПРАВИЛАМ ФОРУМА :

1. Не забывайте указывать полное наименование, модель,марку, изготовителя и краткие характеристики оборудования.
2. Аргументируйте свое мнение - приводите развернутое высказывание или источник информации.
3. Запрещается обсуждать, размещать запросы и ссылки на схемы и оборудование
конфликтующие с законом или несущие явную потенциальную угрозу применения.
4. Не разрешается давать советы из разряда "Выкинь это старьё" и подобные.
5.Наглая реклама и самопиарщиана подлежит отстрелу сопровождаемому соответстующим наказанием
6.Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
7.Запрещается создание тем, не относящиеся непосредственно к "Электронике и схемотехнике"
8.В этом разделе КАТЕГОРИЧЕСКИ запрещен мат во всех его проявлениях, а также: Ругань, оскорбления, переход на
личности.

Если Вы увидели нарушение правил раздела или форума, не поленитесь сообщить об этом модератору.
Участники форума, нарушающие правила, будут наказываться, а вносящие вклад в развитие форума - награждаться (DigiMoney и прочими радостями).


Приятного вам общения! ;)
  
> SPI на STM32F103 , Не понятная работа
    ExpandedWrap disabled
      void SPI2_Send_byte(U16 data)
      {
          while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET); - бесконечно тут крутится. Из-за чего это может быть?
          SPI_I2S_SendData(SPI2,data);
       
          while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET);
          SPI_I2S_ReceiveData(SPI2);
      }


    Непонятна мне природа этого бага. Это раб никак не запуститься? Или что? Где искать?=)
    Сообщение отредактировано: Bubaylo -
      У меня немного другой SPI-код для STM'ки был:
      ExpandedWrap disabled
        void SPI_SendDataToDevice(uintSPI_t nBytesToSend, uint8_t * pDataToSend)
        {   GPIO_WRITE(nSPI_CS_PinID, GPIO_LVL_LOW);  // notSS -> 0.
            while(nBytesToSend--)
            {   // Отправляем байт:
                SPI_I2S_SendData(SPI_MODULE_NAME, *pDataToSend++);
                // Ждём, пока передатчик занят:
                while(SPI_I2S_GetFlagStatus(SPI_MODULE_NAME, SPI_I2S_FLAG_BSY ) == SET);
                // Ждём приёма байта:
                while(SPI_I2S_GetFlagStatus(SPI_MODULE_NAME, SPI_I2S_FLAG_RXNE) != SET);
                // Принимаем байт:
                SPI_I2S_ReceiveData(SPI_MODULE_NAME);
            }
            GPIO_WRITE(nSPI_CS_PinID, GPIO_LVL_HIGH); // notSS -> 1.
            return;
        }
        Уже год прошёл! :lol:

        Всё правильно заинициализировано?
        Вот пример SPI master (SPL)
        https://www.mcu.by/%D1%81%D1%82%D0%B0%D1%80...%D1%82%D1%8C-2/
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0342 ]   [ 15 queries used ]   [ Generated: 3.02.23, 20:46 GMT ]