STM32 и SPI
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Программирование микроконтроллеров
- Просмотров: 3728
Здесь публикуем ссылочки на работу с SPI:
Читаем, для начала, это:
Библиотека номер 1:
- 2 режима работы (16 бит и 8 бит),
- разные конфигурации для разных корпусов
- поддержка STM32F4xx и STM32F7xx
- основано на новых драйверах (HAL)
Здесь примеры кода на STD_Lib и на HAL: http://forum.cxem.net/index.php?showtopic=153734
Здесь также обсуждение и архивы с кодом:
Хотите найти экзамплы для работы SPI памяти, наберите в строке поиска Гугл следующее:
#define WREN 0x06 #define WRDI 0x04 #define RDSR 0x05 #define WRSR 0x01
Не забываем заглянуть в файл: stm32f7xx_hal_conf.h (смотрите подключённые к main.c)
Раскомментируйте
#define HAL_SPI_MODULE_ENABLED

Здесь изучаем псевдокод для обмена с SPI флеш:
И да поможет нам осциллограф :)
Напомнить про работу операционных усилителей поможет эта статья
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Электроника / cхемотехника
- Просмотров: 2831
Хорошие статьи по теме
Лекции
Для понимания СУТИ работы поможет вот это:
Попробуйте поиграться с моделями
10.06.2016 Московская область. Грозовое предупреждение!
- Информация о материале
- Автор: Super User
- Родительская категория: Погода
- Категория: Альтернативная погода от wow-only.ru
- Просмотров: 2344
Атмосферное давление достигает насыщения, что в купе с повышающейся температурой и испарениями, на ниспадающем фронте давления, создаёт условия для образования грозовых фронтов.
ГРОЗОВОЕ ПРЕДУПРЕЖДЕНИЕ!
Давление достигает насыщения
Гуманные методы борьбы с муравьями и тлёй
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Жизнь
- Просмотров: 2564
Особенно понравилось про двусторонний скотч, вскоре попробую.
Ещё по теме:
К фитонцидным и отпугивающим тлю растениям относятся все пахучие травы, чеснок, лук, бархатцы, кориандр, мята, фенхель, а также пиретрум и ромашка далматская. Привлекают тлю липа, черёмуха, калина. Сажать их рядом с основными культурами не рекомендуется.
BMP - продолжаем банкет
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Программирование
- Просмотров: 3551
Читаем снизу вверх с помощью смещения указателя f_seek' ом, слева направо и особое внимание обратите на это:
| ImgSize LoadBitmapFromSD(uint8_t *NameOfFile, uint32_t AddressOfImage) | |
| { | |
| uint32_t index = 0, byte_pixel = 0; | |
| uint32_t psw, scanlinebytes, padding; | |
| ImgSize Size; | |
| // uint32_t address; | |
| uint32_t input_color_mode = 0; | |
| uint8_t pbmp[DisplayWIDTH*4]; | |
| uint8_t res; //variable for return values | |
| FATFS fs; //fat object FATFS | |
| FIL OurFile; // this is our file here | |
| UINT br; //just counter | |
| DWORD PositionOfFile, LineBytesSize; | |
| res = f_mount(&fs,"0:",1); | |
| if (res == FR_OK){ | |
| //open the file | |
| res = f_open(&OurFile,(char const*)NameOfFile,FA_READ); | |
| if (res == FR_OK)f_read(&OurFile, pbmp, 30, &br); | |
| } | |
| else{ | |
| //íå óäàëîñü ñìîíòèðîâàòü äèñê | |
| Size.height = Size.width =0; | |
| return Size; | |
| } | |
| /* Get bitmap data address offset */ | |
| index = *(__IO uint16_t *) (pbmp + 10); | |
| index |= (*(__IO uint16_t *) (pbmp + 12)) << 16; | |
| /* Read bitmap width */ | |
| Size.width = *(uint16_t *) (pbmp + 18); | |
| Size.width |= (*(uint16_t *) (pbmp + 20)) << 16; | |
| /* Read bitmap height */ | |
| Size.height = *(uint16_t *) (pbmp + 22); | |
| Size.height |= (*(uint16_t *) (pbmp + 24)) << 16; | |
| /* Read bit/pixel */ | |
| byte_pixel = (*(uint16_t *) (pbmp + 28))/8; | |
| /* Set the address */ | |
| /* Get the layer pixel format */ | |
| if (byte_pixel == 4) | |
| { | |
| input_color_mode = CM_ARGB8888; | |
| } | |
| else if (byte_pixel == 2) | |
| { | |
| input_color_mode = CM_RGB565; | |
| } | |
| else | |
| { | |
| input_color_mode = CM_RGB888; | |
| } | |
| /* Bypass the bitmap header */ | |
| padding = 0; | |
| scanlinebytes = Size.width * byte_pixel; | |
| while ( ( scanlinebytes + padding ) % 4 != 0 ) | |
| padding++; | |
| psw = scanlinebytes + padding; | |
| PositionOfFile = index + psw * (Size.height - 1); | |
| LineBytesSize = byte_pixel * Size.width; | |
| res = f_lseek(&OurFile, PositionOfFile); //pointer to the last line of bitmap | |
| res = f_read(&OurFile, &pbmp[0], LineBytesSize, &br); | |
| /* Convert picture to ARGB8888 pixel format */ | |
| for(index=0; index < Size.height; index++) | |
| { | |
| /* Pixel format conversion */ | |
| LL_ConvertLineToARGB8888(pbmp, (void *)AddressOfImage, (uint32_t) Size.width, (uint32_t) input_color_mode); | |
| /* Increment the source and destination buffers */ | |
| AddressOfImage += (Size.width * 4); | |
| PositionOfFile -= psw; | |
| f_lseek(&OurFile, PositionOfFile); //pointer to the last line of bitmap | |
| f_read(&OurFile, pbmp, LineBytesSize + (Size.width) % 4, &br); | |
| } | |
| f_close(&OurFile);//close the file | |
| f_mount(NULL, "0:", 0);//unmount the drive | |
| return Size; | |
| } |
// Сама функция LL_ConvertLineToARGB8888 ниже:
void LL_ConvertLineToARGB8888(void *pSrc, void *pDst, uint32_t xSize, uint32_t ColorMode)
Страница 153 из 197
