23.02.2012, 20:44
|
#1281
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
а какой смысл менять проверенную среду на фиг_знает_что_еще_там_будет?
код в разы меньше и быстрее не станет, так что... я с v4 на v5 не очень то и хотел
|
|
|
|
24.02.2012, 08:51
|
#1282
|
Временная регистрация
Регистрация: 14.11.2008
Сообщений: 68
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от pasipaka
|
Поблочно.... А чем тебя твои области - блоки не устраивают?
|
говорю ведь, хочу избавиться от загрузчика. хочу сделать так что б программа могла перезаписать сама себя. возможно такое?
|
|
|
|
24.02.2012, 13:59
|
#1283
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
да, возможно. следующий вопрос?
|
|
|
|
25.02.2012, 21:16
|
#1284
|
Частый гость
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Hачал изучать stm32 + MMC + FatFs. В принципе все заработало. В примерах подключения карты часто используется программный SPI. При работе на частоте 24 МГц получается скорость SPI около 1 Мбита. Захотелось перевести на аппаратный SPI2, но при этом карта инициализируется на скорости до 250 кбит. Быстрее-вылазит ошибка. Вот кусочек инициализации и чтения /записи.
Код:
|
RCC-›APB1ENR |= RCC_APB1ENR_SPI2EN; //подать тактирование
SPI2-›CR1 = 0x0000; //очистить первый управляющий регистр
SPI2-›CR2 = 0x0000; //очистить второй управляющий регистр
SPI2-›CR1 |= SPI_CR1_MSTR; //контроллер должен быть мастером
SPI2-›CR1 |= 0x30; //задаем скорость 30=4мкс
SPI2-›CR1 |= SPI_CR1_SPE; //разрешить работу модуля SPI |
Код:
|
void xmit_spi(unsigned char data)
{/*
unsigned char i;
for (i=0;i‹8;i++) //Цикл перебора битов отправляемого байта
{
if ((data&0x80)==0x00)//Если все данные переданы
{
GPIOB-›ODR &=~0x0001; //Выставить бит данных
}
else GPIOB-›ODR|=0x0001;
data=data‹‹1;
GPIOB-›ODR|=0x0004; //Импульс
GPIOB-›ODR&=~0x0004;
}
*/
while (SPI2-›SR & SPI_SR_BSY);
while (!(SPI2-›SR & SPI_SR_TXE));
SPI2-›DR = data; // Передача данных
} |
Код:
|
static
BYTE rcvr_spi (void)
{ /*
//Декларация переменных
unsigned char i, res=0;
for(i=0;i‹8;i++)
{
GPIOB-›ODR|=0x0004; //Фронт импульса
res=res‹‹1;
if ((GPIOB-›IDR&0x0002)!=0x00) res=res|0x01; //Считать бит данных
GPIOB-›ODR&=~0x0004; //Спад испульса
}
*/
while (!(SPI2-›SR & SPI_SR_RXNE)) {SPI2-›DR = 0xff;};
res = SPI2-›DR;
return res ;
} |
закомментирован программный SPI. Подскажите, где может быть ошибка?Как поднять скорость?
Последний раз редактировалось Sergi_alc; 25.02.2012 в 22:39.
|
|
|
|
25.02.2012, 21:45
|
#1285
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Sergi_alc
|
но при этом карта инициализируется на скорости до 125 кбит. Быстрее-вылазит ошибка.
|
И что??? В чём вопрос, собственно???
До 125 это нормально... это же только инициализация, после неё поднимайте скорость SPI до 12Мбит...
|
|
|
|
25.02.2012, 21:50
|
#1286
|
Частый гость
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Дело в том что при программном SPI я не меняю скорость и все работает. А при аппаратном работает только в 4 раза медленнее.
|
|
|
|
25.02.2012, 21:55
|
#1287
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Это у вас от непонимания работы SD... В спецификации указано - инициализация 100-400кБит... У меня тоже не все карточки выше 125 инициализируются... хоть на ПИК, хоть на АВР, хоть на NXP, хоть на STM8 или STM32...
|
|
|
|
25.02.2012, 21:59
|
#1288
|
Частый гость
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Попробовал менять скорость после инициализации. Максимум 500 кбит, на 1 Мбит не поднимается.
|
|
|
|
25.02.2012, 22:12
|
#1289
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Sergi_alc
|
Подскажите, где может быть ошибка?Как поднять скорость?
|
В проверке флагов SPI...
|
|
|
|
25.02.2012, 22:18
|
#1290
|
Частый гость
Регистрация: 30.10.2011
Сообщений: 28
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Статус-регистр считывал. Я так понимаю что после считывания флаги сбросятся. Отдельно не надо сбрасывать? Скорость не поднималась.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:12.
|
|