Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

2 часа назад, Электронщик сказал:

Zhuk72 а где у вас включение SPI модуля находится?

В процедуре чтения я делаю

RFID_NSS = 0;
SPI2->CR1 |= SPI_CR1_SPE;

По завершению делаю обратный процесс.

Кстати, еще одна полезность в 103-м и аналогичных, имеющих бит-бандинг. На одном из сайтов (к сожалению не помню каком) обнаружил удобные дефайны для работы с портами.

Вписываете это где вам удобно:

Скрытый текст

// PA0..PA15, PB0..PB15, PC13..PC15, PD0..PD1 (STM32C8xx)
// Bit banding
// Input
#define PORTA ((uint32_t *)((0x42000000  + ((0x40010800 + 0x08)-0x40000000)*32)))
#define PORTB ((uint32_t *)((0x42000000  + ((0x40010C00 + 0x08)-0x40000000)*32)))
#define PORTC ((uint32_t *)((0x42000000  + ((0x40011000 + 0x08)-0x40000000)*32)))
#define PORTD ((uint32_t *)((0x42000000  + ((0x40011400 + 0x08)-0x40000000)*32)))
// Output
#define LATA ((uint32_t *)((0x42000000  + ((0x40010800 + 0x0C)-0x40000000)*32)))
#define LATB ((uint32_t *)((0x42000000  + ((0x40010C00 + 0x0C)-0x40000000)*32)))
#define LATC ((uint32_t *)((0x42000000  + ((0x40011000 + 0x0C)-0x40000000)*32)))
#define LATD ((uint32_t *)((0x42000000  + ((0x40011400 + 0x0C)-0x40000000)*32)))

 

Теперь если есть, например светодиод на PC13, то пишете #define LED LATC[13], после чего работаете со светодиодом по имени:

LED = 1;
LED = 0;
LED = ~LED;

Если порт работает на вход, например кнопка на РА1, то назначаете #define BUTTON1 PORTA[1], после чего обращаетесь с кнопкой напрямую по имени.

Ссылка на комментарий
Поделиться на другие сайты

У меня проблема случилась, почему -то после заливки кода I2C по регистрам, у меня теперь плата с процом видется как низкоскоростное устройство 

Вот такой скриншот, и шить могу только через ЮАРТ1 через ЮСБ-ТТЛ преобразователь, было у кого - то такое? А через ЮСБ - ТТЛ не удобно шиться, каждый раз перемычка и RESET/

Screenshot_7.jpg.c20fdd3f4f398e8b0db4ece5d5ce3d84.jpg

Zhuk72 f а есть кусочек кода с ДМА, чтобы хоть глянуть как оно работает?

 

Ссылка на комментарий
Поделиться на другие сайты

Вы там в процессе опытов РА13 и РА14 не зацепили каким-то образом?

И почему не из среды программируете, а отдельной программой?

Скрытый текст

void spi2dma_init(void)
{
// SPI2_MISO - DMA_CH4
// SPI2_MOSI - DMA_CH5
  RCC->AHBENR |= RCC_AHBENR_DMA1EN;
/*1. Set the peripheral register address in the DMA_CPARx register. The data will be
moved from/ to this address to/ from the memory after the peripheral event.*/
  DMA1_Channel4->CPAR = (unsigned long)&SPI2->DR;
  DMA1_Channel5->CPAR = (unsigned long)&SPI2->DR;
/*2. Set the memory address in the DMA_CMARx register. The data will be written to or
read from this memory after the peripheral event.*/
  DMA1_Channel4->CMAR = (unsigned long)&rfid_in[0];
  DMA1_Channel5->CMAR = (unsigned long)&rfid_out[0];
/*3. Configure the total number of data to be transferred in the DMA_CNDTRx register.
After each peripheral event, this value will be decremented.*/
  DMA1_Channel4->CNDTR = 64;
  DMA1_Channel5->CNDTR = 64;
/*4. Configure the channel priority using the PL[1:0] bits in the DMA_CCRx register.*/
  DMA1_Channel4->CCR = DMA_CCR4_PL_0;
  DMA1_Channel5->CCR = DMA_CCR5_PL_0;
/*5. Configure data transfer direction, circular mode, peripheral & memory incremented
mode, peripheral & memory data size, and interrupt after half and/or full transfer in the
DMA_CCRx register.*/
  DMA1_Channel4->CCR |= (DMA_CCR4_MINC | DMA_CCR4_TCIE);                // Per->Mem
  DMA1_Channel5->CCR |= (DMA_CCR5_MINC | DMA_CCR5_DIR | DMA_CCR5_TCIE); // Mem->Per
/*6. Activate the channel by setting the ENABLE bit in the DMA_CCRx register.*/
  DMA1_Channel4->CCR |= DMA_CCR4_EN;
  DMA1_Channel5->CCR |= DMA_CCR5_EN;
  SPI2->CR2 |= (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN);
  NVIC_EnableIRQ(DMA1_Channel4_IRQn);
  NVIC_EnableIRQ(DMA1_Channel5_IRQn);
}

void DMA1_IRQHandler(void)
{
  if(DMA1->ISR & DMA_ISR_TCIF4)         // Receive completed.
  {
    DMA1->IFCR &= ~DMA_IFCR_CTCIF4;    // Completion flag clear.
    // Процедура по завершению приема
  }
    else if (DMA1->ISR & DMA_ISR_TCIF5) // Transmit completed.
    {
      DMA1->IFCR &= ~DMA_IFCR_CTCIF5;   // Completion flag clear.
      // Процедура по завершению передачи
    }
}

 

Но в деле я это пока не проверял ))

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А из среды постоянно с самого начала ошибку выдает, могу только отладку оттуда загружать

Не знаю как но задел, этим кодом ноги отладчика 

/ текущее значение частоты PCLK1 (может быть от 2 до 32, включительно)
//I2C2->CR2 &= ~I2C_CR2_FREQ;
//I2C2->CR2 |= 2;


//2,097 МГц / 100 кГц = 10;

//I2C2->CCR &= ~I2C_CCR_CCR;
I2C2->CCR |= 10;
//I2C2->TRISE = 3;

Киньте пожалуйста как у Вас по скорости выставляется для I2C, а лучше инициализацию, я в инициализации только включил сам модуль I2C, тактирование I2C, с делителями теперь не знаю что делать, по приему передаче похоже на АВР.

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Регулярные каналы ADC1 (0 - 3), ДМА.

 

F103_ADC_Test_DMA.zip

Да, много всего непонятного, куча режимов и т.д.

@Электронщик Какой у вас отладчик?

в принципе, расчетное время преобразования совпадает с реальным и равен 84 мкс - 4 канала.

Ссылка на комментарий
Поделиться на другие сайты

Кроме всего прочего нужно заглядывать в Errat-у, я тоже с i2c не работал, но глюки там точно были.

@Электронщик попробуйте в STM32 ST-LINK Utility стереть чип, а потом подключить через отладчик.

точно ноги SWD портите, в кубе вы выбирали отладку?

Ссылка на комментарий
Поделиться на другие сайты

Я за I2C спрашиваю, не хотите поиграться? А то что-то я один не могу его добить. Посмотрю потом, как вы настроили номера пинов на номера регулярных каналов

Ссылка на комментарий
Поделиться на другие сайты

так я и пишу что некуда подключить, о если айду в дипе вроде память была, у меня есть софтовый я его на RTC опробовал работает нормально, правда в блок режиме.

 

ну у меня совсем 1 резистор подстроечный, может и у меня не все гладко, я не знаю)

Ссылка на комментарий
Поделиться на другие сайты

Кстати I2C на HAL у меня запустилось давно, правда, вот функция записи и чтения внешней памяти по I2C на HAL у меня не работают почему-то. А по регистрам I2C тоже не могу запустить.

Еще вопрос я так понимаю для осциллографа лучше использовать инжекторные каналы, а не регулярные с ДМА, так как получим большую скорость, так как проц занят АЦП, а не ДМА, который 50% проца использует? Просто набросал себе осцилограф, и думаю как лучше? И еще тоже такой вопрос, в осциллографе смещение входа АЦП делаю половиной напряжения питания, а вот есть такая фишка на АЦП как смещение АЦП, я так понимаю мне его можно использовать для этих целей, а провод с половины питания проца можно убрать? И есть ли функция смещения АЦП в HAL? 

Кстати вычитал, что смещение АЦП предусмотрено только для инжекторных каналов.

Ссылка на комментарий
Поделиться на другие сайты

MasterElectric когда будет время с I2С аппаратным повозиться, ты скажи, а то я сам победить его не могу я тебе и свой набросок могу в личку скинуть, правда он не работает, но что-то близко, а ты как будет время напиши.

Ссылка на комментарий
Поделиться на другие сайты

нашел 24c32a atmel, но на AVR я так и не смог написать библиотеку под него, что-то он замысловатый. Тут нужно теорию вначале почитать, может пример где найду.  

@Электронщик Ну начал, буду мучать 24с64, думаю что поборю 9 регистров всего)

Ссылка на комментарий
Поделиться на другие сайты

 Просто, я кстати RTC DS1307 на АВР по регистрам запустил, а тут через HAL memory write memory read не работает, так же как и память.

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

I2C то ли сложный, то ли глючный. Изучаю http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries-expansions/stsw-stm32020.html На CMSIS примеров почти нет, а те что есть не на 100% стабильно работают судя по всему.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...