Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: посоветуйте STM32 cortex M3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
Allregia
Просто для информации:

Программный SPI на STM32F405 REV_A и REV_Z
(не спрашивайте почему программный, на то были причины, суть не в этом).
Код:
CODE
#define ADDR_L ADDR_PORT->BSRRH = ADDR_PIN
#define ADDR_H ADDR_PORT->BSRRL = ADDR_PIN
//
#define SDA_L SDA_PORT->BSRRH = SDA_PIN
#define SDA_H SDA_PORT->BSRRL = SDA_PIN
//
#define SCL_L SCL_PORT->BSRRH = SCL_PIN
#define SCL_H SCL_PORT->BSRRL = SCL_PIN
//
#define CS_L CS_PORT->BSRRH = CS_PIN
#define CS_H CS_PORT->BSRRL = CS_PIN
//-------------------------------------------------
static __INLINE void SendByte(u8 c){
if(c &0x80) SDA_H; else SDA_L; SCL_H;
if(c &0x40) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x20) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x10) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x08) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x04) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x02) SDA_H; else SDA_L; SCL_L; SCL_H;
if(c &0x01) SDA_H; else SDA_L; SCL_L; SCL_H;

SCL_L;
}

//---------------------------------------
void Write_REG(u8 c){
CS_L;
ADDR_L;
SendByte©;
CS_H;

}



Результат длительности CS (по осциллографу) в различных условиях:

// ~1,3uS w/o OPT for 'A'
// ~1,0uS w/o OPT for 'Z'
// ~0.85uS with OPT Level 3 + Otp to Time for 'A'
// ~0.6uS with OPT Level 3 + Otp to Time for 'Z'
demiurg_spb
Цитата(Allregia @ Feb 19 2013, 20:00) *
Здорово! А что ерата говорит относительно изменений в этих ревизиях?
В чём, так сказать, соль?
AHTOXA
В ревизии A не работает ART prefetch.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.