Форум РадиоКот • Просмотр темы - STM32L476VGT + AT45DB321
Сообщения без ответов | Активные темы
Страница 1 из 1
[ Сообщений: 6 ]
Автор
Сообщение
Arthur_1990
Заголовок сообщения: STM32L476VGT + AT45DB321
Добавлено: Пн сен 25, 2017 10:12:38
Зарегистрирован: Пт сен 22, 2017 08:16:53Сообщений: 7
Рейтинг сообщения: 0
void GPIO_and_setting_for_spi1(void)// peredelat na spi1/ pa5 pa6 pa7 ///cs1-pa1 cs2-pa8 cs3-pa9 cs4-pa15 { RCC->APB2ENR|=RCC_APB2ENR_SPI1EN; RCC->AHB2ENR|=RCC_AHB2ENR_GPIOAEN|RCC_AHB2ENR_GPIOBEN; CLEAR_BIT(GPIOA->MODER,0x00005400); //GPIOSPI GPIOA->AFR[0]|=0x55500000; // GPIOB->MODER &= ~(1 <<3);//CS GPIOB->MODER &= ~(1 <<1); SPI1 -> CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR| SPI_CR1_BR_2; SPI1 -> CR2 =SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2 /*| SPI_CR2_FRXTH*/; SPI1->CR2 |= SPI_CR2_RXNEIE/*|SPI_CR2_TXEIE*/|SPI_CR2_ERRIE ; //????????? ??????????, ???? ?????? ???? ?????? NVIC_EnableIRQ (SPI1_IRQn); } uint8_t SPI_SendByte(uint8_t byte) {while(!READ_BIT(SPI1 -> SR, SPI_SR_TXE)); SPI1->DR = byte; } int main(void) { __disable_irq (); // GLOBAL INTERRUPT __enable_irq (); /*SET_BIT(RCC->CR,RCC_CR_HSION); SET_BIT(RCC->CFGR,RCC_CFGR_SW_0); CLEAR_BIT(RCC->CR,RCC_CR_MSION);*/ delay(1000); GPIO_and_setting_for_spi1(); ADC1_INIT(); SET_BIT(SPI1->CR1,SPI_CR1_SPE); while (1) { delay(100); /* GPIOB->ODR=0x0; SPI_SendByte(0xD7); SPI_SendByte(0x00); while(READ_BIT(SPI1 -> SR, SPI_SR_BSY)); GPIOB->ODR=0x2; */ GPIOB->ODR=0x0; SPI_SendByte(0x84); SPI_SendByte(0x00); SPI_SendByte(0x0); SPI_SendByte(0x10); for(uint8_t q=0; q<0xe0;q++){ SPI_SendByte(q);} while(READ_BIT(SPI1 -> SR, SPI_SR_BSY)); GPIOB->ODR=0x2; GPIOB->ODR=0x0; SPI_SendByte(0x84); SPI_SendByte(0x00); SPI_SendByte(0x0); SPI_SendByte(20); for(uint8_t q=0; q<16;q++){SPI_SendByte(1);} GPIOB->ODR=0x2; delay(10); GPIOB->ODR=0x0; SPI_SendByte(0x84); SPI_SendByte(0x0); SPI_SendByte(0x0); SPI_SendByte(25); for(uint8_t q=0; q<5;q++){SPI_SendByte(5);} GPIOB->ODR=0x2; delay(10); GPIOB->ODR=0x0; SPI_SendByte(0xD4); SPI_SendByte(0x0); SPI_SendByte(0x0); i=0; SPI_SendByte(0); SPI_SendByte(0); for(uint8_t q=0; q<0xff;q++){SPI_SendByte(0);} while(READ_BIT(SPI1 -> SR, SPI_SR_BSY)); //a[3]=tmp; GPIOB->ODR=0x2; } void SPI1_IRQHandler(void) { if(READ_BIT(SPI1->SR,SPI_SR_RXNE)) {CLEAR_BIT(SPI1->CR2,SPI_CR2_RXNEIE); if(i==0xff){i=0;} a[i]=tmp=(SPI1->DR)>>8; i++; SET_BIT(SPI1->CR2,SPI_CR2_RXNEIE); } } Все массивы пишутся с одного и того же адреса. Ну тоесть байт+бит адреса в буфере всегда воспринимается как ноль. Никак не могу понять что не так((
Вернуться наверх
Реклама
Zhuk72
Заголовок сообщения: Re: STM32L476VGT + AT45DB321
Добавлено: Пн сен 25, 2017 10:48:43
Сверлит текстолит когтями
Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31Сообщений: 1231Откуда: Баку
Рейтинг сообщения: 0
А как объявлена i из прерывания SPI?
_________________ Каждый имеет право на свое личное ошибочное мнение. У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Вернуться наверх
Реклама
Arthur_1990
Заголовок сообщения: Re: STM32L476VGT + AT45DB321
Добавлено: Пн сен 25, 2017 11:05:13
Зарегистрирован: Пт сен 22, 2017 08:16:53Сообщений: 7
Рейтинг сообщения: 0
uint8_t i; как глобальная. еще такая осбенность. когда D7(единоразово) отправляю флешка начинает спамить B4 со страшной силой не смотря на то что ей дальше отправляю
Последний раз редактировалось Arthur_1990 Пн сен 25, 2017 11:29:01, всего редактировалось 1 раз.
Вернуться наверх
Zhuk72
Заголовок сообщения: Re: STM32L476VGT + AT45DB321
Добавлено: Пн сен 25, 2017 11:28:25
Сверлит текстолит когтями
Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31Сообщений: 1231Откуда: Баку
Рейтинг сообщения: 0
Добавьте ей volatile.
_________________ Каждый имеет право на свое личное ошибочное мнение. У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Вернуться наверх
Arthur_1990
Заголовок сообщения: Re: STM32L476VGT + AT45DB321
Добавлено: Пн сен 25, 2017 11:37:11
Зарегистрирован: Пт сен 22, 2017 08:16:53Сообщений: 7
Рейтинг сообщения: 0
оптимизацию не делал. но volatile все равно присунул. результат не поменялсяДобавлено after 5 minutes 59 seconds: как мне видеться проблемы именно с записью. массив один на другой накладывается. а читаю я за 1 раз.
Вернуться наверх
Реклама
Arthur_1990
Заголовок сообщения: Re: STM32L476VGT + AT45DB321
Добавлено: Вт сен 26, 2017 11:15:23
Зарегистрирован: Пт сен 22, 2017 08:16:53Сообщений: 7
Рейтинг сообщения: 0
Написал схожий код под F4(spi2) (в хозяйстве имеется f4disc) на нем все фурычит. Этот хитровыдуманный fifo в spi все виноват, но решения найти пока не могу(...
Вернуться наверх
Реклама
Страница 1 из 1
[ Сообщений: 6 ]
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения