Я могу честно признаться что сколько не читал так и не смог понять пиципы работы USB. Читаешь вроде ни чего сложного, а на практике ступор. Для кого то это семечки, но не для меня. К чему эт, да к тому что в оисании часто многое опускается, автор подразумевает что многое и так понятно.
А нужно просто себя заставить! Другого способа нет. Я когда начинал с СТМ32 просто заставил себя изучить таймера и ДМА. Зато теперь - лепота!
Цитата:
К стати библиотека SPL для f4 там есть косяк с работой BSRR, я для себя решил этот ворпрос исправив определения в CMSIS, В CMSIS, что для адептов кащумство.
Ха! Dosikus и до вас добрался? ))))))))))))))))))))))
И по поводу CMSIS просто чушь. Хотите правьте исходники, хотите заводите свой файл. Для СТМ8 вообще самый лучший вариант дописать хедер камня до конца. А что делать?
Я придерживаюсь мнения, если умеешь найти решение чьей то ошибки, то и свою найдешь однозначно. Обосную данное заявление. Изучая чужой код програмер вынужден понимать чужую логику. Если вы можите аонять логику другого програмера, то уж свою логику вы проанализируете на раз, два, три.
Если использование чужих библиотек оправдано лишь повышением эрудиции - оно не оправдано. Мне хватает чужих ошибок в жизни (и даже в обучении!), если они будут ещё и в коде... К тому же, когда пишешь сложный код, очень неприятно, когда ошибка обнаруживается в сторонней библиотеке, потому что на них как-то полагаешься больше, начинаешь грешить на свою логику...
Я придерживаюсь мнения, если умеешь найти решение чьей то ошибки, то и свою найдешь однозначно. Обосную данное заявление. Изучая чужой код програмер вынужден понимать чужую логику. Если вы можите аонять логику другого програмера, то уж свою логику вы проанализируете на раз, два, три.
Не вижу кайфа ковыряния и поиска ошибок в чужих исходниках, гораздо приоритетнее не допускать ошибок в своих.
А нужно просто себя заставить! Другого способа нет. Я когда начинал с СТМ32 просто заставил себя изучить таймера и ДМА. Зато теперь - лепота!
Цитата:
К стати библиотека SPL для f4 там есть косяк с работой BSRR, я для себя решил этот ворпрос исправив определения в CMSIS, В CMSIS, что для адептов кащумство.
Ха! Dosikus и до вас добрался? ))))))))))))))))))))))
И по поводу CMSIS просто чушь. Хотите правьте исходники, хотите заводите свой файл. Для СТМ8 вообще самый лучший вариант дописать хедер камня до конца. А что делать?
dosikus здесь совершенно не причем. Сам он пользует все библиотеки равнозначно. Да и без него было ясно, что изучение архитектуры и периферии невозможно без RM, что касается CMSIS ну не панацея это, а путь в некуда. Большинство функций, структур, объединений и определений SPL и HAL это альтернативная версия ваших жалких потуг создать идеальное решение. Учитесь пользоваться инструментами, а не тесать каменный топорт.
ssss, вот скажите мне, наколько SPL или HAL нерабочие, вы хоть раз пытались написать код использую эти библиотеки. Что то наталкивает меня на мысль что вы и не пытались, а следовательно обективно оценивать их не способны.
что касается CMSIS ну не панацея это, а путь в некуда.
Жалкая отмазка почитателей серого брата РС. Здесь же кодят МК, как не крути! Вы настойчиво путаете либы верхнего и нижнего уровня, причём постоянно.
Цитата:
Большинство функций, структур, объединений и определений SPL и HAL это альтернативная версия ваших жалких потуг создать идеальное решение. Учитесь пользоваться инструментами, а не тесать каменный топорт.
Следуя вашей логике, CMSIS это молоток, SPL - лупа, а HAL - микроскоп. Так вот, мне сподручнее забивать гвозди молотком, а не микроскопом!
Не вижу кайфа ковыряния и поиска ошибок в чужих исходниках, гораздо приоритетнее не допускать ошибок в своих.
Свежо придание....... НО благими намериниями выстлана дорога в АД!!!!
Поверил бы! Но пока всё наоборот. Люди часто только задают вопрос, а у меня уже решение готово, с применением железа по максимуму. А что у вас? "Надо в либу заглянуть" или "А в либе такого нету!"?
ssss, вот скажите мне, наколько SPL или HAL нерабочие, вы хоть раз пытались написать код использую эти библиотеки. Что то наталкивает меня на мысль что вы и не пытались, а следовательно обективно оценивать их не способны.
Мне SPL хватило, чтобы понять что это гнусное и неповоротливое чудовище с ограниченностью функционала. Я плотно работаю с железом, очень плотно, и мне все эти прыжки в сторону как-то не в кайф.
Мне SPL хватило, чтобы понять что это гнусное и неповоротливое чудовище с ограниченностью функционала. Я плотно работаю с железом, очень плотно, и мне все эти прыжки в сторону как-то не в кайф.
И что же вы плотно общаясь с железом наваяли.?Еще раз убедили меня в том что апломб заменяет образование. Мне например ни что не мешает использовать SPL или HAL, а там где не хватает кирпичей, то я газету (CMSIS) приспосабливаю. Написание програм на asm требуют очень глубокого знания архитектуры и внутренних интерфейсов м/к, честно не готов так глубоко рыть - это не AVR.
a5021, смотрите при компиляции лог asm и вы все поймете деточка.
Понятие не имею, что такое "лог asm", бабушка. Вас сложно понять, но можно догадаться, что каким-то горбатым термином собственного изобретения вы называете ассемблерный листинг, который генерирует компилятор. Если я угадал (а о смысле ваших слов можно только догадываться) ,то для вышеприведенной функции инициализации I2C на F030, он получился таким:
И чего на самом деле стоят ваши бредни насчет "гуляния по регистру" (кстати, о чем это вообще было, кто нибудь может перевести?) и двухсот-трехсот тактов? Что за чушь вы несли? Пребывали в уверенности, что вашу чепуху никто не поймет и не проверит? Экое легкомыслие.
Еще, кстати, можете для собственного просвещения сравнить это с листингом, получающимся при использовании SPL. Ну или я могу это сделать, чтобы вы уж обосрались окончательно.
Цитата:
Хватит срать в теме, учитесь кодить на серьезном железеи
Сами-то научились уже? Или, как обычно, отвлеченно побрехиваете для разнообразия о том, о чем сами никакого представления не имеете? Тешите себя иллюзиями, что тут дурачки сплошь собрались? Никто ничего не понял, не видит и не слышит? Ну тешьте-тешьте.
Кодить учится мне особенно не нужно. Разве, что какой-то специфике, с которой еще не сталкивался. Да и серьезное железо тут ничем особо не отличается от несерьезного. Периферия везде одинаковая и то, что в старших моделях она пожирнее и понаворочаннее, принципиально ничего не меняет.
Цитата:
выскажите хоть раз свое мнеие, а не то что прочитали в интернете. А потом повторили на практике.
Можно подумать, вы чего-то знаете о моей практике. Вытаскиваете тут козявки из носа и в рот себе отправляете. Тем и довольны. Остальное сочиняете.
Еще раз убедили меня в том что апломб заменяет образование.
Уточните, как одно может быть связано с другим?
Цитата:
Мне например ни что не мешает использовать SPL или HAL, а там где не хватает кирпичей, то я газету (CMSIS) приспосабливаю.
Я не танцор, мне тоже ничего не мешает. ))))))))
Ещё раз! Вы путаете понятия. Зачем юзать убогие либы там, где это и даром не нужно? Другое дело верхний уровень. ЮСБ на АСМе я уж точно писать не буду.
ssss, уверен вы и на CMSIS USB не поднимете, такие люди конечно есть, но не среди учавствующих в данном балагане. Устал я от вашего шапито. Исходя из вашего определения asm - это язык высокого уровня, а C++ низкого, ФЕЕРИЧНО!!!! Или я не совсем понял вашей логики. И кто вам сказал что ваши либы аптимальны, понятные вам одному да, не более того. a5021 вспомнил свое детство и как сопли жевал, не страдаю таким недугом.... Если он не понимает сути сказанного и бросается писать пост не поняв очем реч. Тогда понятно что он за програмер. Особенно если у него в програме происходит инициализация всего одной перефирии. У меня так получается при изучении или отладки работы отдельно взятой периферии. И возвращаясь к либам, кто мешает редактировать и доаолнять ее, такого нет. Они имеют открытый текст в отличии от либ Mikroe. А главное чем отличается запись в стиле CMSIS от SPL, да посути ни чем, только арфографически, специально сравнивал количество тактов на исполнение макроса на CMSIS и функции на SPL абсолютно одинакова и вчем тогда выгода???? Только что завышенная самооценка, типа я круче, у меня есть ошибки которых нет у индусов. А главное люди которым подсовывают такое решение как лекарство от глупости, осаждают потом форумы с вопросами как это использовать и почему не работает или компилятор выдает ошибку. Хуже если человек вынужден идти в магазин за новым камнем. Зачастую в таких"либах" неучитывается проверка синтексиса или разные уровни оптимизации и использовать ее можно толко в определенной среде разработки.
a5021 вспомнил свое детство и как сопли жевал, не страдаю таким недугом.... Если он не понимает сути сказанного и бросается писать пост не поняв очем реч.
Как? Я опять не разглядел гениальных мыслей в ваших словах? Опять не понял? Снова не о том отвечать взялся?
Странное дело, как только вы получается по щам за свои бредовые выссказывания, тут же выясняется, что, оказывается, вас не правильно поняли. Но позвольте, как можно неправильно понять вот это:
"По этой причине они пыжаться и пишут макросы которые работают в два раза медленнее чем немног правленная родная библа на C. Ну не идиотизм полностью гулять по регистру когда надо сменить пару бит. Вот и получается что только при инициализации периферии они теряют до 200 - 300 тактов."
"Макросы, которые работают в два раза медленнее" -- полнейший бред. В ассемблере они разворачиваются в пяток инструкций. Короче уже не бывает. И в два раза быстрее тоже. В следующий раз сравнивайте листинги, а не ахинею сочиняйте, не имея ни малейшего представления о предмете.
"идиотизм полностью гулять по регистру когда надо сменить пару бит" -- полный аут. маститый программист, работающий с крутейшим железом не понимает, что запись вида:
Это никакое не "гулять по регистру". Вышеприведенное развернутое представление полностью идентично коду:
I2C1->CR1 = 167;
Вы спалились полностью. Вы ничего не понимаете в программировании. Вы не в состоянии распознать даже самые простые конструкции языка Си.
Ну и не менее шедевральное:
Вот и получается что только при инициализации периферии они теряют до 200 - 300 тактов.
Теперь смотрим на те 16 комманд ассемблерного листинга "инициализации" той самой "приферии" и мучительно соображаем, о чем вещал непризнанный гений программирования и повелитель крутейшего железа. Понять его порой действительно трудно, т.к. он чаще всего бормочет нечто совершенно бессвязное, не имея ни малейшего представления о предмете разговора. Отсюда все эти "логи asm", "гулять по регистру" и прочий непереводимый ишемический бред.
Профессионал, не знающий базовой терминологии и не понимающий простых конструкций языка? Знаем-знаем. Один такой живет на форуме arduino.ru. Большой специалист.
И нахрена козе баян. Мне например вот такая простыня не нужна. Достаточно записи второго вида:
I2C1->CR1 = 167;
И если в ваших либах прописанная инициализация содержит все регистры, даже если вы их не меняете они учавствуют в этом процессе, тут и набегают лишние такты. Вы привели пример описания одного регистра, остальное упустили. Я не телепат чтобы угадывать какой бред в вашей голове. Что бы закончить этот беспридметный спор, нравиться вам проводить часы создавая понятную только вам абракадабру, делате. Меня пока устраивает то что предлогают производители. А то что мешает или работает не так и можно исправить, правлю.
Чем ругаться из за методов работы лучше направте в нужном направлении. Есть такая либа как FstFs готовые решения для подключения CD, SRAM, USB Flash есть и как юзать их понятно. А вот с User_diskio я вроде понимаю куда рыть, но пока не до конца. В этом файле как я понимаю нужно описать функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться. Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.
#ifdef USE_OBSOLETE_USER_CODE_SECTION_0
/*
* Warning: the user section 0 is no more in use (starting from CubeMx version 4.16.0)
* To be suppressed in the future.
* Kept to ensure backward compatibility with previous CubeMx versions when
* migrating projects.
* User code previously added there should be copied in the new user sections before
* the section contents can be deleted.
*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
#endif
/* USER CODE BEGIN DECL */
/* Includes ------------------------------------------------------------------*/
#include <string.h>
#include "ff_gen_drv.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Disk status */
static volatile DSTATUS Stat = STA_NOINIT;
/* USER CODE END DECL */
/* Private function prototypes -----------------------------------------------*/
DSTATUS USER_initialize (BYTE pdrv);
DSTATUS USER_status (BYTE pdrv);
DRESULT USER_read (BYTE pdrv, BYTE *buff, DWORD sector, UINT count);
#if _USE_WRITE == 1
DRESULT USER_write (BYTE pdrv, const BYTE *buff, DWORD sector, UINT count);
#endif /* _USE_WRITE == 1 */
#if _USE_IOCTL == 1
DRESULT USER_ioctl (BYTE pdrv, BYTE cmd, void *buff);
#endif /* _USE_IOCTL == 1 */
Diskio_drvTypeDef USER_Driver =
{
USER_initialize,
USER_status,
USER_read,
#if _USE_WRITE
USER_write,
#endif /* _USE_WRITE == 1 */
#if _USE_IOCTL == 1
USER_ioctl,
#endif /* _USE_IOCTL == 1 */
};
/* Private functions ---------------------------------------------------------*/
/**
* @brief Initializes a Drive
* @param pdrv: Physical drive number (0..)
* @retval DSTATUS: Operation status
*/
DSTATUS USER_initialize (
BYTE pdrv /* Physical drive nmuber to identify the drive */
)
{
/* USER CODE BEGIN INIT */
Stat = STA_NOINIT;
return Stat;
/* USER CODE END INIT */
}
/**
* @brief Gets Disk Status
* @param pdrv: Physical drive number (0..)
* @retval DSTATUS: Operation status
*/
DSTATUS USER_status (
BYTE pdrv /* Physical drive nmuber to identify the drive */
)
{
/* USER CODE BEGIN STATUS */
Stat = STA_NOINIT;
return Stat;
/* USER CODE END STATUS */
}
/**
* @brief Reads Sector(s)
* @param pdrv: Physical drive number (0..)
* @param *buff: Data buffer to store read data
* @param sector: Sector address (LBA)
* @param count: Number of sectors to read (1..128)
* @retval DRESULT: Operation result
*/
DRESULT USER_read (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
BYTE *buff, /* Data buffer to store read data */
DWORD sector, /* Sector address in LBA */
UINT count /* Number of sectors to read */
)
{
/* USER CODE BEGIN READ */
return RES_OK;
/* USER CODE END READ */
}
/**
* @brief Writes Sector(s)
* @param pdrv: Physical drive number (0..)
* @param *buff: Data to be written
* @param sector: Sector address (LBA)
* @param count: Number of sectors to write (1..128)
* @retval DRESULT: Operation result
*/
#if _USE_WRITE == 1
DRESULT USER_write (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
const BYTE *buff, /* Data to be written */
DWORD sector, /* Sector address in LBA */
UINT count /* Number of sectors to write */
)
{
/* USER CODE BEGIN WRITE */
/* USER CODE HERE */
return RES_OK;
/* USER CODE END WRITE */
}
#endif /* _USE_WRITE == 1 */
/**
* @brief I/O control operation
* @param pdrv: Physical drive number (0..)
* @param cmd: Control code
* @param *buff: Buffer to send/receive control data
* @retval DRESULT: Operation result
*/
#if _USE_IOCTL == 1
DRESULT USER_ioctl (
BYTE pdrv, /* Physical drive nmuber (0..) */
BYTE cmd, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
/* USER CODE BEGIN IOCTL */
DRESULT res = RES_ERROR;
return res;
/* USER CODE END IOCTL */
}
#endif /* _USE_IOCTL == 1 */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Вот в этом файле как я понял надо прописать все функции и будет мне счастье.
И нахрена козе баян. Мне например вот такая простыня не нужна.
Разумеется не нужна. Вы не знаете, как этим пользоваться и не понимаете, какую пользу такая запись несет.
Цитата:
Достаточно записи второго вида:
I2C1->CR1 = 167;
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Цитата:
И если в ваших либах прописанная инициализация содержит все регистры, даже если вы их не меняете они учавствуют в этом процессе, тут и набегают лишние такты.
Бред тут набегает. Бред, который вы несете во всевозрастающих объемах.
Цитата:
Вы привели пример описания одного регистра, остальное упустили. Я не телепат чтобы угадывать какой бред в вашей голове.
Честно сказать, я уже охреневаю от такой шизофрении. "пример описания одного регистра" -- это вообще-то фрагмент функции initI2C(), опубликованной в посте №166, господин "не телепат".
Цитата:
Меня пока устраивает то что предлогают производители.
А они вам особо ничего и не "предлогают". Для F7, из ассортимента предложений доступен только HAL, которым вы никогда не пользовались и которого не знаете. Значит все предыдущие знания (если они у вас таки имеются) и опыт использованием SPL (буде таковой наличествует), псу под хвост. Начинаем учить все заново. Только теперь уже почти без свзязи с реальным железом. Для вас, мне кажется, занятие -- самое то. Поучите годик-другой, а там ST еще чего-нибудь придумает и все придется начинать по новой. Несколько подобных итераций, а там, глядишь, пенсия, внуки и почтенная старость. От перспектив аж дух захватывает.
[quote=diger67]Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.[/qutoe]
А затруднений с пониманием, где вы находитесь, у вас не возникает?
Если у вас память девичья мне вас жаль. Природа меня не обидела память, бывало такое что открыв проект через пол года я в течении часа восстанавливаю общую картину, второе, существуют коментарии, полезная знаете штука, помогает на ура. Не думаю что это вам интересно, я свободно использую HAL.
Нет, уважаемый. В вопросе я немного понимаю. Про волшебные цифры не я придумал. Просто в программировании существуют распространенные практики, как удачные, так и не очень. Всякий, кто хоть немного связан с написанием программ, обычно об этом знает. А вот вы не знаете. И это выдает в вас крайнего невежду, который пыжится, тужится, но ничего не знает и не умеет.
Чем ругаться из за методов работы лучше направте в нужном направлении. Есть такая либа как FstFs готовые решения для подключения CD, SRAM, USB Flash есть и как юзать их понятно. А вот с User_diskio я вроде понимаю куда рыть, но пока не до конца. В этом файле как я понимаю нужно описать функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться. Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.
Странный вы какой-то, очень странный. Я бы даже сказал мутный. Два поста назад вы были "впереди планеты всей", а мы "ламеры". И теперь по безнадёге вы у нас просите помощи? Это как? ))))))))))))))))))))
Если вы делали уже проект на меге, а потом на СТМ32 два раза, то вы уже должны были вычленить основное, неизменное (высокий уровень), и различия (низкий уровень) при общении с либой FatFs. Да, нужно прикрутить своё "функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться". У вас трудности? А что, ХАЛ вам в этом совсем не помощник? Странно, да?
ssss, когда я делал проект на AVR, то там я использовал 25Q128 по SPI. Сейчас с учетом возможностей новой архитектуры есть возможность юзать QSPI, мало того примапить ее память к общему пространству Flash, если я правильно понял апнот. Ну и надо же узнавать что то кроме определений, способов адресации итп новое. решил попробовать ознакомится с FatFs. HAL содержит только описание процедур , там еще надо будет прописывать структуры регистра статуса, дефайнить коды ошибок, понять как их привязать к FatFs. Вобщем не только в самих чипах дело.
Наконец добрался до NAND, пришла м/с на 128 Мбайт. Запаял на плату накидал код, считал ID, все работает. Теперь надо прикручивать к FatFs. Если все получется обязательно поделюсь, так как в интернете не нашел решения данной задачи.
Пока STM32F030C8T6 едут из Китая, решил на STM8L051F3P6 посмотреть -- нет ли в нем чего недокументированного -- больно уж он на своего старшего братца, STM8L151F3P6, похож. Правда, там и по даташиту отличий всего ничего, но все равно, иметь за цену 8L051 более дорогого 8L151, как-то поинтересней.
Подоткнул на макетку переходник с 8L051, создал проект в IAR-е для 8L151, стал смотреть, на месте ли компаратор, который должен быть в 151-м, но отсутствует у 051-го. Сначала прошелся отладчиком. Регистры компаратора на месте, биты, допускающие изменения значений, откликаются.
Скоммутировал через Routing Interface компаратор к пинам МК (по умолчанию он снаружи недоступен).
COMP_CSR3_VREFEN = 1; // Connect Vref to neg. inp.
// Connect positive input to MCU pin
RI_ASCR1_AS6 = 1; // Toggle analog switch AS6
RI_ASCR2_AS14 = 1; // Connect COMP1 to RI
RI_IOSR1_CH19E = 1; // Connect RI to PB0 pin
COMP_CSR1_CMP1 = 3; // Event detection on both edges
в цикле учинил опрос выхода компаратора и сделал отображение его состояния на светодиоде, подключенном к PD0.
Подключив к десятому пину (PB0) регулируемый источник напряжения, стал крутить регулятор, чтобы напряжение то превышало 1.2 вольта, то становилось меньше. Светодиод стал четко загораться и тухнуть при переходе напряжения черз границу в 1.22 вольта.
Таким образом установлено наличие компаратора в STM8L051, который в даташите не упоминается. Налицо ситуация, когда кристаллы 051 и 151, скорее всего, идентичны, а модели МК отличаются только надписью на корпусе. Ситуация с F030/F031 повторяется и на STM8L.
Странное дело, поиск чернойкошки в темной комнате дело хорошее, но это только скажем так снижение материальных издержек. Лучше бы ты икру метал.
Почитав инфу по FatFs выяснил для себя что не такой ужи срашный это зверь. Особо помогает что в CubeMX, который профессиАнальные кодеры называют Гавнокодерской примочкой есть много чего хорошего, да и HAL по сути содержит не только макроопределения, дефайны и функции низкого уровня, но и в какойто мере выступает в роли снипетов по использованию периферии. Да не оптимально, да присутствуют ошибки. Но надо же на каком то примере учиться. А поняв общий принцип работы периферии можно пото поиграться и поаптимизировать.
Таким образом установлено наличие компаратора в STM8L051, который в даташите не упоминается. Налицо ситуация, когда кристаллы 051 и 151, скорее всего, идентичны, а модели МК отличаются только надписью на корпусе. Ситуация с F030/F031 повторяется и на STM8L.
Прикольно, плюсую. А по поводу РОМ, РАМ, ЕЕПРОМ и ТИМ1 ничего не пробивал?
Почитав инфу по FatFs выяснил для себя что не такой ужи срашный это зверь.
Эти откровения нужно записать в библию, не меньше. Остаётся загадкой, как пользовались FatFs до этого.
C CD и USB Flash driver особых проблем не было, там все прозрачно, я имею ввиду попытку создать свой модуль используя user_driver опцию для Flash подключаемой по FSMC или FMC, конкретно samsung 8 бит.
Прикольно, плюсую. А по поводу РОМ, РАМ, ЕЕПРОМ и ТИМ1 ничего не пробивал?
TIM1 я взялся искать в первую очередь. Была призрачная надежда, что и 151Сx на этом же кристалле. Пришлось обломаться. По адресам, начиная с 0x52B0 (регистры TIM1), одни нули, хотя тот же ARR после подачи питания должен быть 0XFFFF. Запись по этим адресам попробовал -- не проходит.
Кому тут скорости-мегагерцев было мало? Встречайте! STM32H7хх.
Он только пявился, линейка очень короткая, большая часть анонсирована на 2017 год. Да и пока есть с чем разбиратся на существующих камнях. Не искать черных кошек в темной комнате, а работать с периферией.
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Плюсую!!! Где-то в году 2000 или около того писал я программу контроллера управления вязальной машиной, на ассемблере (PIC), там скомпилированного кода килобайта два всего, как-то открыл исходник, подивился, неужели это я писал, каждый бит прописан, что, для чего и куда, а в комментариях ход мыслей и, что проверить ))) Хоть сейчас бери и дополняй функционал, минут 20 ознакомления будет достаточно...
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Плюсую!!! Где-то в году 2000 или около того писал я программу контроллера управления вязальной машиной, на ассемблере (PIC), там скомпилированного кода килобайта два всего, как-то открыл исходник, подивился, неужели это я писал, каждый бит прописан, что, для чего и куда, а в комментариях ход мыслей и, что проверить ))) Хоть сейчас бери и дополняй функционал, минут 20 ознакомления будет достаточно...
Кто бы спорил что коментарии в коде очень полезная штука. А если человек еще при этом понимает что происходит в черном прямоугольнике под названием м/к, совсем хорошо. На чем писать, это дело вкуса и оптимальности. Нужно быстродействие, пиши на ассемблере, сложно работать на низком уровне пользуйся языком высокого уроня. И тут уж что больше понравится, и на что хватает знаний.
Еще немного поигрался с "недокументированным" ЦАП-ом на STM32F030C8T6. Вывод гладкой синусоиды 20кгц:
В одной клетке 0.5 вольта и 10 микросекунд.
Простая синусоида понравилась, но захотелось изобразить что-то позабористее. Вот так выглядит результат сложения трех синусоидальных сигналов с частотами 20кгц, 10кгц и 5 кгц, сдвинутых друг относительно друга по фазе на 30 градусов:
Здесь в одной клетке те же 0.5 вольта, но 50 микросекунд.
Стоит отметить, что вывод производится силами одной только периферии -- одним таймером, одним каналом ДМА и собственно ЦАПом. Полностью аппаратно. Процессор здесь не задействован и никакой код для формирования сигнала не выполняет.
В принципе, в формировании разнообразных сигналов силами ЦАПа STM32 никакой новации нет, но чтобы это делали на МК ценой 75 центов (50 руб) мне как-то раньше видеть не приходилось.
В принципе, в формировании разнообразных сигналов силами ЦАПа STM32 никакой новации нет, но чтобы это делали на МК ценой 75 центов (50 руб) мне как-то раньше видеть не приходилось.
Ну так если периферия полноценна и ни чем ни отличается от того что имеется в более старших и дорогих STM чему удивлятся. Единственное различие наверное это дискретность, на более быстрых камнях диапазон будет несколько шире.
Заинтриговали, полез смотреть на АЛИ и? Что один, что второй оба проца идут практически по одной и той же оптовой цене в 40-45 руб за корпус, а можно найти STM32F051c8t6 даже и за 35руб/шт. Просто маркировку ошибочно нанесли .. могу ещё понять, когда разница в цене "в разы", а так - стоит ли потраченное время - результату? ;)
Но, в целом - интересно, можете поиследовать ещё какие-нибудь пары? К примеру можно ли найти "дешевый аналог" STM32F429 ? А то как-то дороговастенько стоит..
Заинтриговали, полез смотреть на АЛИ и? Что один, что второй оба проца идут практически по одной и той же оптовой цене в 40-45 руб за корпус, а можно найти STM32F051c8t6 даже и за 35руб/шт.
Вас не затруднит указать, где точно они продаются по такой цене? Мы либо какие-то разные али посещаем, либо я окончательно разучился пользоваться поиском. Мысли о том, что вас преследуют какие-то дикие галлюцинации, я, разумеется, допустить не могу.
Цитата:
Просто маркировку ошибочно нанесли .. могу ещё понять, когда разница в цене "в разы", а так - стоит ли потраченное время - результату? ;)
Я как-то не догоняю всей глубины этой мысли. Вы имели в виду, что если разница в разы есть, то смысл раскуривать периферию появляется, а если нет, то исчезает? Мне почему-то такой довод видится очень своеобразным и необычным.
Цитата:
Но, в целом - интересно, можете поиследовать ещё какие-нибудь пары? К примеру можно ли найти "дешевый аналог" STM32F429 ? А то как-то дороговастенько стоит..
Как-то так сложилось, что у меня нет задач под подобное железо и по этой причине я не особо ими интересуюсь.
diger67 пишет:
Единственное различие наверное это дискретность, на более быстрых камнях диапазон будет несколько шире.
Если более быстрой будет периферия, то да, а так и на 051 все упирается в 1 мегасемпл/с быстродействия ЦАПа, с чем данный МК прекрасно справляется, и никакая дополнительная производительность тут выгод не даст.
Под оптовыми ценами на али я понимаю "цена за 1шт", где в лотах стоит стоимость доставки. Вы наверное смотрите "бесплатная доставка". Не знаю, где и что Вы ищете, но вот память 512кб 50нс в количестве 5шт мне пришла по цене 42руб за корпус. Одну потестировал - вроде даже и рабочая. :)
Под оптовыми ценами на али я понимаю "цена за 1шт", где в лотах стоит стоимость доставки. Вы наверное смотрите "бесплатная доставка". Не знаю, где и что Вы ищете, но вот память 512кб 50нс в количестве 5шт мне пришла по цене 42руб за корпус.
У вас не возникает легкого ощущения, что вы вообще-то не на тот вопрос отвечаете? Я ж вроде о простой вещи спросил: где точно они продаются по названной вами цене? Махание рукой в неопределенном направлении не является ответом ни на какой вопрос, как не является подтверждением ваших слов и упоминание о совершенно другом товаре, удачно прикупленном вами по отличной цене.
Попутно вас информирую, что там "где в лотах стоит стоимость доставки", эта самая стоимость имеет очень интересное свойство -- безальтернативно меняться в зависимости от количества заказанного товара. Возможно именно упоминавшиеся вами "STM32F051c8t6 за 35руб/шт" при попытке заказать их в количестве 5 штук, преподносят как раз такой "сюрприз" незадачливому покупателю:
И какие бы сказки про белого бычка, кто тут ни рассказывал, можно купить только по такой цене и никак дешевле.
Значит у нас с Вами разный АЛИ .. ладно, мне это не интересно.
P.S. А Вы на самой алибабе - зареганы? (А то было дело, заключал там контракт давненько уже .. до сих пор помнят, и рекламку шлют и с днюхой проздравляет продаван) может в этом дело?
Единственное различие наверное это дискретность, на более быстрых камнях диапазон будет несколько шире.
Если более быстрой будет периферия, то да, а так и на 051 все упирается в 1 мегасемпл/с быстродействия ЦАПа, с чем данный МК прекрасно справляется, и никакая дополнительная производительность тут выгод не даст.
Это было лирическое отступление не более того. В целом если на борту имеется недокументированная периферия это хорошо. И тут вступает в силу заявление о недостатке библиотек SPL и выше. Понятно что для ее использования необходимо юзать CMSIS, так как скорее всего надо будет допиливать библиотеку SPL. Хотя проект созданный для RBT я без проблемм заливал в C8T, понятное дело простенькие, но все же.
Заинтересовался МК от Silabs, ко мне уже едет парочка образцов, выяснил, что смогу программировать их, используя Keil v5 (с которым и так для STM32 работаю).
Поставил через пак менеджер DFP для нужной серии, в девайс менеджере камни появились, в селекторе при создании проекта - нет...что делать?
Все что вы написали говорит о том что вы не умеете работать с документами.
Можете пояснить, как это вытекает из моего поста?
Лучше делать свои косяки, чем пытаться исправлять чужие©
Я могу честно признаться что сколько не читал так и не смог понять пиципы работы USB. Читаешь вроде ни чего сложного, а на практике ступор. Для кого то это семечки, но не для меня. К чему эт, да к тому что в оисании часто многое опускается, автор подразумевает что многое и так понятно.
А нужно просто себя заставить! Другого способа нет. Я когда начинал с СТМ32 просто заставил себя изучить таймера и ДМА. Зато теперь - лепота!
К стати библиотека SPL для f4 там есть косяк с работой BSRR, я для себя решил этот ворпрос исправив определения в CMSIS, В CMSIS, что для адептов кащумство.
Ха! Dosikus и до вас добрался? ))))))))))))))))))))))
И по поводу CMSIS просто чушь. Хотите правьте исходники, хотите заводите свой файл. Для СТМ8 вообще самый лучший вариант дописать хедер камня до конца. А что делать?
Можете пояснить, как это вытекает из моего поста?
Лучше делать свои косяки, чем пытаться исправлять чужие©
Я придерживаюсь мнения, если умеешь найти решение чьей то ошибки, то и свою найдешь однозначно. Обосную данное заявление. Изучая чужой код програмер вынужден понимать чужую логику. Если вы можите аонять логику другого програмера, то уж свою логику вы проанализируете на раз, два, три.
Если использование чужих библиотек оправдано лишь повышением эрудиции - оно не оправдано. Мне хватает чужих ошибок в жизни (и даже в обучении!), если они будут ещё и в коде... К тому же, когда пишешь сложный код, очень неприятно, когда ошибка обнаруживается в сторонней библиотеке, потому что на них как-то полагаешься больше, начинаешь грешить на свою логику...
Я придерживаюсь мнения, если умеешь найти решение чьей то ошибки, то и свою найдешь однозначно. Обосную данное заявление. Изучая чужой код програмер вынужден понимать чужую логику. Если вы можите аонять логику другого програмера, то уж свою логику вы проанализируете на раз, два, три.
Не вижу кайфа ковыряния и поиска ошибок в чужих исходниках, гораздо приоритетнее не допускать ошибок в своих.
А нужно просто себя заставить! Другого способа нет. Я когда начинал с СТМ32 просто заставил себя изучить таймера и ДМА. Зато теперь - лепота!
К стати библиотека SPL для f4 там есть косяк с работой BSRR, я для себя решил этот ворпрос исправив определения в CMSIS, В CMSIS, что для адептов кащумство.
Ха! Dosikus и до вас добрался? ))))))))))))))))))))))
И по поводу CMSIS просто чушь. Хотите правьте исходники, хотите заводите свой файл. Для СТМ8 вообще самый лучший вариант дописать хедер камня до конца. А что делать?
dosikus здесь совершенно не причем. Сам он пользует все библиотеки равнозначно. Да и без него было ясно, что изучение архитектуры и периферии невозможно без RM, что касается CMSIS ну не панацея это, а путь в некуда. Большинство функций, структур, объединений и определений SPL и HAL это альтернативная версия ваших жалких потуг создать идеальное решение. Учитесь пользоваться инструментами, а не тесать каменный топорт.
Не вижу кайфа ковыряния и поиска ошибок в чужих исходниках, гораздо приоритетнее не допускать ошибок в своих.
Свежо придание....... НО благими намериниями выстлана дорога в АД!!!!
ssss, вот скажите мне, наколько SPL или HAL нерабочие, вы хоть раз пытались написать код использую эти библиотеки. Что то наталкивает меня на мысль что вы и не пытались, а следовательно обективно оценивать их не способны.
что касается CMSIS ну не панацея это, а путь в некуда.
Жалкая отмазка почитателей серого брата РС. Здесь же кодят МК, как не крути! Вы настойчиво путаете либы верхнего и нижнего уровня, причём постоянно.
Большинство функций, структур, объединений и определений SPL и HAL это альтернативная версия ваших жалких потуг создать идеальное решение. Учитесь пользоваться инструментами, а не тесать каменный топорт.
Следуя вашей логике, CMSIS это молоток, SPL - лупа, а HAL - микроскоп. Так вот, мне сподручнее забивать гвозди молотком, а не микроскопом!
Не вижу кайфа ковыряния и поиска ошибок в чужих исходниках, гораздо приоритетнее не допускать ошибок в своих.
Свежо придание....... НО благими намериниями выстлана дорога в АД!!!!
Поверил бы! Но пока всё наоборот. Люди часто только задают вопрос, а у меня уже решение готово, с применением железа по максимуму. А что у вас? "Надо в либу заглянуть" или "А в либе такого нету!"?
ssss, вот скажите мне, наколько SPL или HAL нерабочие, вы хоть раз пытались написать код использую эти библиотеки. Что то наталкивает меня на мысль что вы и не пытались, а следовательно обективно оценивать их не способны.
Мне SPL хватило, чтобы понять что это гнусное и неповоротливое чудовище с ограниченностью функционала. Я плотно работаю с железом, очень плотно, и мне все эти прыжки в сторону как-то не в кайф.
Мне SPL хватило, чтобы понять что это гнусное и неповоротливое чудовище с ограниченностью функционала. Я плотно работаю с железом, очень плотно, и мне все эти прыжки в сторону как-то не в кайф.
И что же вы плотно общаясь с железом наваяли.?Еще раз убедили меня в том что апломб заменяет образование. Мне например ни что не мешает использовать SPL или HAL, а там где не хватает кирпичей, то я газету (CMSIS) приспосабливаю. Написание програм на asm требуют очень глубокого знания архитектуры и внутренних интерфейсов м/к, честно не готов так глубоко рыть - это не AVR.
Понятие не имею, что такое "лог asm", бабушка. Вас сложно понять, но можно догадаться, что каким-то горбатым термином собственного изобретения вы называете ассемблерный листинг, который генерирует компилятор. Если я угадал (а о смысле ваших слов можно только догадываться) ,то для вышеприведенной функции инициализации I2C на F030, он получился таким:
Ровно 23 ассемблерных команды. Т.е. соврали вы примерно в 10-15 раз.
Вышеприведенный код получается при выключенной оптимизации. При включенной, код усыхает до 16 команд:
И чего на самом деле стоят ваши бредни насчет "гуляния по регистру" (кстати, о чем это вообще было, кто нибудь может перевести?) и двухсот-трехсот тактов? Что за чушь вы несли? Пребывали в уверенности, что вашу чепуху никто не поймет и не проверит? Экое легкомыслие.
Еще, кстати, можете для собственного просвещения сравнить это с листингом, получающимся при использовании SPL. Ну или я могу это сделать, чтобы вы уж обосрались окончательно.
Сами-то научились уже? Или, как обычно, отвлеченно побрехиваете для разнообразия о том, о чем сами никакого представления не имеете? Тешите себя иллюзиями, что тут дурачки сплошь собрались? Никто ничего не понял, не видит и не слышит? Ну тешьте-тешьте.
Кодить учится мне особенно не нужно. Разве, что какой-то специфике, с которой еще не сталкивался. Да и серьезное железо тут ничем особо не отличается от несерьезного. Периферия везде одинаковая и то, что в старших моделях она пожирнее и понаворочаннее, принципиально ничего не меняет.
Можно подумать, вы чего-то знаете о моей практике. Вытаскиваете тут козявки из носа и в рот себе отправляете. Тем и довольны. Остальное сочиняете.
Еще раз убедили меня в том что апломб заменяет образование.
Уточните, как одно может быть связано с другим?
Мне например ни что не мешает использовать SPL или HAL, а там где не хватает кирпичей, то я газету (CMSIS) приспосабливаю.
Я не танцор, мне тоже ничего не мешает. ))))))))
Ещё раз! Вы путаете понятия. Зачем юзать убогие либы там, где это и даром не нужно? Другое дело верхний уровень. ЮСБ на АСМе я уж точно писать не буду.
ssss, уверен вы и на CMSIS USB не поднимете, такие люди конечно есть, но не среди учавствующих в данном балагане. Устал я от вашего шапито. Исходя из вашего определения asm - это язык высокого уровня, а C++ низкого, ФЕЕРИЧНО!!!! Или я не совсем понял вашей логики. И кто вам сказал что ваши либы аптимальны, понятные вам одному да, не более того. a5021 вспомнил свое детство и как сопли жевал, не страдаю таким недугом.... Если он не понимает сути сказанного и бросается писать пост не поняв очем реч. Тогда понятно что он за програмер. Особенно если у него в програме происходит инициализация всего одной перефирии. У меня так получается при изучении или отладки работы отдельно взятой периферии. И возвращаясь к либам, кто мешает редактировать и доаолнять ее, такого нет. Они имеют открытый текст в отличии от либ Mikroe. А главное чем отличается запись в стиле CMSIS от SPL, да посути ни чем, только арфографически, специально сравнивал количество тактов на исполнение макроса на CMSIS и функции на SPL абсолютно одинакова и вчем тогда выгода???? Только что завышенная самооценка, типа я круче, у меня есть ошибки которых нет у индусов. А главное люди которым подсовывают такое решение как лекарство от глупости, осаждают потом форумы с вопросами как это использовать и почему не работает или компилятор выдает ошибку. Хуже если человек вынужден идти в магазин за новым камнем. Зачастую в таких"либах" неучитывается проверка синтексиса или разные уровни оптимизации и использовать ее можно толко в определенной среде разработки.
Как? Я опять не разглядел гениальных мыслей в ваших словах? Опять не понял? Снова не о том отвечать взялся?
Странное дело, как только вы получается по щам за свои бредовые выссказывания, тут же выясняется, что, оказывается, вас не правильно поняли. Но позвольте, как можно неправильно понять вот это:
"По этой причине они пыжаться и пишут макросы которые работают в два раза медленнее чем немног правленная родная библа на C. Ну не идиотизм полностью гулять по регистру когда надо сменить пару бит. Вот и получается что только при инициализации периферии они теряют до 200 - 300 тактов."
"Макросы, которые работают в два раза медленнее" -- полнейший бред. В ассемблере они разворачиваются в пяток инструкций. Короче уже не бывает. И в два раза быстрее тоже. В следующий раз сравнивайте листинги, а не ахинею сочиняйте, не имея ни малейшего представления о предмете.
"идиотизм полностью гулять по регистру когда надо сменить пару бит" -- полный аут. маститый программист, работающий с крутейшим железом не понимает, что запись вида:
Это никакое не "гулять по регистру". Вышеприведенное развернутое представление полностью идентично коду:
Вы спалились полностью. Вы ничего не понимаете в программировании. Вы не в состоянии распознать даже самые простые конструкции языка Си.
Ну и не менее шедевральное:
Вот и получается что только при инициализации периферии они теряют до 200 - 300 тактов.
Теперь смотрим на те 16 комманд ассемблерного листинга "инициализации" той самой "приферии" и мучительно соображаем, о чем вещал непризнанный гений программирования и повелитель крутейшего железа. Понять его порой действительно трудно, т.к. он чаще всего бормочет нечто совершенно бессвязное, не имея ни малейшего представления о предмете разговора. Отсюда все эти "логи asm", "гулять по регистру" и прочий непереводимый ишемический бред.
Профессионал, не знающий базовой терминологии и не понимающий простых конструкций языка? Знаем-знаем. Один такой живет на форуме arduino.ru. Большой специалист.
И нахрена козе баян. Мне например вот такая простыня не нужна. Достаточно записи второго вида:
И если в ваших либах прописанная инициализация содержит все регистры, даже если вы их не меняете они учавствуют в этом процессе, тут и набегают лишние такты. Вы привели пример описания одного регистра, остальное упустили. Я не телепат чтобы угадывать какой бред в вашей голове. Что бы закончить этот беспридметный спор, нравиться вам проводить часы создавая понятную только вам абракадабру, делате. Меня пока устраивает то что предлогают производители. А то что мешает или работает не так и можно исправить, правлю.
Чем ругаться из за методов работы лучше направте в нужном направлении. Есть такая либа как FstFs готовые решения для подключения CD, SRAM, USB Flash есть и как юзать их понятно. А вот с User_diskio я вроде понимаю куда рыть, но пока не до конца. В этом файле как я понимаю нужно описать функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться. Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.
Вот в этом файле как я понял надо прописать все функции и будет мне счастье.
Разумеется не нужна. Вы не знаете, как этим пользоваться и не понимаете, какую пользу такая запись несет.
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Бред тут набегает. Бред, который вы несете во всевозрастающих объемах.
Честно сказать, я уже охреневаю от такой шизофрении. "пример описания одного регистра" -- это вообще-то фрагмент функции initI2C(), опубликованной в посте №166, господин "не телепат".
А они вам особо ничего и не "предлогают". Для F7, из ассортимента предложений доступен только HAL, которым вы никогда не пользовались и которого не знаете. Значит все предыдущие знания (если они у вас таки имеются) и опыт использованием SPL (буде таковой наличествует), псу под хвост. Начинаем учить все заново. Только теперь уже почти без свзязи с реальным железом. Для вас, мне кажется, занятие -- самое то. Поучите годик-другой, а там ST еще чего-нибудь придумает и все придется начинать по новой. Несколько подобных итераций, а там, глядишь, пенсия, внуки и почтенная старость. От перспектив аж дух захватывает.
[quote=diger67]Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.[/qutoe]
А затруднений с пониманием, где вы находитесь, у вас не возникает?
Если у вас память девичья мне вас жаль. Природа меня не обидела память, бывало такое что открыв проект через пол года я в течении часа восстанавливаю общую картину, второе, существуют коментарии, полезная знаете штука, помогает на ура. Не думаю что это вам интересно, я свободно использую HAL.
Дадад. В ваших рассказах всегда происходят удивительные вещи.
Дадад. В ваших рассказах всегда происходят удивительные вещи.
Если вы не понимаете в этом вопросе моглибы и промолчать, а то как базарная баба, каждой бочке затычка. Идите гавнокодте.
Нет, уважаемый. В вопросе я немного понимаю. Про волшебные цифры не я придумал. Просто в программировании существуют распространенные практики, как удачные, так и не очень. Всякий, кто хоть немного связан с написанием программ, обычно об этом знает. А вот вы не знаете. И это выдает в вас крайнего невежду, который пыжится, тужится, но ничего не знает и не умеет.
Чем ругаться из за методов работы лучше направте в нужном направлении. Есть такая либа как FstFs готовые решения для подключения CD, SRAM, USB Flash есть и как юзать их понятно. А вот с User_diskio я вроде понимаю куда рыть, но пока не до конца. В этом файле как я понимаю нужно описать функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться. Есть память samsung на 2 гига. Подключается по FMC, речь о F429, без FatFs пишется читается стирается. А вот как ее прикрутить, те внедрить эти функци в эту либу, вобщем возникли затруднения.
Странный вы какой-то, очень странный. Я бы даже сказал мутный. Два поста назад вы были "впереди планеты всей", а мы "ламеры". И теперь по безнадёге вы у нас просите помощи? Это как? ))))))))))))))))))))
Если вы делали уже проект на меге, а потом на СТМ32 два раза, то вы уже должны были вычленить основное, неизменное (высокий уровень), и различия (низкий уровень) при общении с либой FatFs. Да, нужно прикрутить своё "функции записи, чтения стирания и инициализации устройства с которым мы собираемся общаться". У вас трудности? А что, ХАЛ вам в этом совсем не помощник? Странно, да?
ssss, когда я делал проект на AVR, то там я использовал 25Q128 по SPI. Сейчас с учетом возможностей новой архитектуры есть возможность юзать QSPI, мало того примапить ее память к общему пространству Flash, если я правильно понял апнот. Ну и надо же узнавать что то кроме определений, способов адресации итп новое. решил попробовать ознакомится с FatFs. HAL содержит только описание процедур , там еще надо будет прописывать структуры регистра статуса, дефайнить коды ошибок, понять как их привязать к FatFs. Вобщем не только в самих чипах дело.
Наконец добрался до NAND, пришла м/с на 128 Мбайт. Запаял на плату накидал код, считал ID, все работает. Теперь надо прикручивать к FatFs. Если все получется обязательно поделюсь, так как в интернете не нашел решения данной задачи.
Пока STM32F030C8T6 едут из Китая, решил на STM8L051F3P6 посмотреть -- нет ли в нем чего недокументированного -- больно уж он на своего старшего братца, STM8L151F3P6, похож. Правда, там и по даташиту отличий всего ничего, но все равно, иметь за цену 8L051 более дорогого 8L151, как-то поинтересней.
Подоткнул на макетку переходник с 8L051, создал проект в IAR-е для 8L151, стал смотреть, на месте ли компаратор, который должен быть в 151-м, но отсутствует у 051-го. Сначала прошелся отладчиком. Регистры компаратора на месте, биты, допускающие изменения значений, откликаются.
Скоммутировал через Routing Interface компаратор к пинам МК (по умолчанию он снаружи недоступен).
в цикле учинил опрос выхода компаратора и сделал отображение его состояния на светодиоде, подключенном к PD0.
Подключив к десятому пину (PB0) регулируемый источник напряжения, стал крутить регулятор, чтобы напряжение то превышало 1.2 вольта, то становилось меньше. Светодиод стал четко загораться и тухнуть при переходе напряжения черз границу в 1.22 вольта.
Таким образом установлено наличие компаратора в STM8L051, который в даташите не упоминается. Налицо ситуация, когда кристаллы 051 и 151, скорее всего, идентичны, а модели МК отличаются только надписью на корпусе. Ситуация с F030/F031 повторяется и на STM8L.
Странное дело, поиск чернойкошки в темной комнате дело хорошее, но это только скажем так снижение материальных издержек. Лучше бы ты икру метал.
Почитав инфу по FatFs выяснил для себя что не такой ужи срашный это зверь. Особо помогает что в CubeMX, который профессиАнальные кодеры называют Гавнокодерской примочкой есть много чего хорошего, да и HAL по сути содержит не только макроопределения, дефайны и функции низкого уровня, но и в какойто мере выступает в роли снипетов по использованию периферии. Да не оптимально, да присутствуют ошибки. Но надо же на каком то примере учиться. А поняв общий принцип работы периферии можно пото поиграться и поаптимизировать.
Таким образом установлено наличие компаратора в STM8L051, который в даташите не упоминается. Налицо ситуация, когда кристаллы 051 и 151, скорее всего, идентичны, а модели МК отличаются только надписью на корпусе. Ситуация с F030/F031 повторяется и на STM8L.
Прикольно, плюсую. А по поводу РОМ, РАМ, ЕЕПРОМ и ТИМ1 ничего не пробивал?
Почитав инфу по FatFs выяснил для себя что не такой ужи срашный это зверь.
Эти откровения нужно записать в библию, не меньше. Остаётся загадкой, как пользовались FatFs до этого.
Почитав инфу по FatFs выяснил для себя что не такой ужи срашный это зверь.
Эти откровения нужно записать в библию, не меньше. Остаётся загадкой, как пользовались FatFs до этого.
C CD и USB Flash driver особых проблем не было, там все прозрачно, я имею ввиду попытку создать свой модуль используя user_driver опцию для Flash подключаемой по FSMC или FMC, конкретно samsung 8 бит.
TIM1 я взялся искать в первую очередь. Была призрачная надежда, что и 151Сx на этом же кристалле. Пришлось обломаться. По адресам, начиная с 0x52B0 (регистры TIM1), одни нули, хотя тот же ARR после подачи питания должен быть 0XFFFF. Запись по этим адресам попробовал -- не проходит.
Ну что ж! Наличие компаратора тоже является неплохим результатом.
Кому тут скорости-мегагерцев было мало? Встречайте! STM32H7хх.
Кому тут скорости-мегагерцев было мало? Встречайте! STM32H7хх.
Он только пявился, линейка очень короткая, большая часть анонсирована на 2017 год. Да и пока есть с чем разбиратся на существующих камнях. Не искать черных кошек в темной комнате, а работать с периферией.
Долго ехали STM32F030C8T6 из Китая, но наконец-то приехали. Проверил.
Вот так на нем работает ЦАП, которого в 030 не должно быть в принципе.
В качестве теста генерируется правильный синус 25кГц.
Все подтвердилось: STM32F030C8T6 и STM32F051C8T6 -- это один и тот же МК и отличие только в надписи на корпусе.
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Плюсую!!! Где-то в году 2000 или около того писал я программу контроллера управления вязальной машиной, на ассемблере (PIC), там скомпилированного кода килобайта два всего, как-то открыл исходник, подивился, неужели это я писал, каждый бит прописан, что, для чего и куда, а в комментариях ход мыслей и, что проверить ))) Хоть сейчас бери и дополняй функционал, минут 20 ознакомления будет достаточно...
Замечательно. Инициализация с помощью "волшебных цифр" являет образец говнокода в самом худшем его виде. Совершенно не удивительно, что именно он вам больше всего и глянулся. Вы наверное еще не в курсе, но "волшебные цифры" обладают очень интересным свойством -- через час после их появления в коде, даже тот, кто их написал, уже не вспомнит, что они значат.
Плюсую!!! Где-то в году 2000 или около того писал я программу контроллера управления вязальной машиной, на ассемблере (PIC), там скомпилированного кода килобайта два всего, как-то открыл исходник, подивился, неужели это я писал, каждый бит прописан, что, для чего и куда, а в комментариях ход мыслей и, что проверить ))) Хоть сейчас бери и дополняй функционал, минут 20 ознакомления будет достаточно...
Кто бы спорил что коментарии в коде очень полезная штука. А если человек еще при этом понимает что происходит в черном прямоугольнике под названием м/к, совсем хорошо. На чем писать, это дело вкуса и оптимальности. Нужно быстродействие, пиши на ассемблере, сложно работать на низком уровне пользуйся языком высокого уроня. И тут уж что больше понравится, и на что хватает знаний.
Еще немного поигрался с "недокументированным" ЦАП-ом на STM32F030C8T6. Вывод гладкой синусоиды 20кгц:
В одной клетке 0.5 вольта и 10 микросекунд.
Простая синусоида понравилась, но захотелось изобразить что-то позабористее. Вот так выглядит результат сложения трех синусоидальных сигналов с частотами 20кгц, 10кгц и 5 кгц, сдвинутых друг относительно друга по фазе на 30 градусов:
Здесь в одной клетке те же 0.5 вольта, но 50 микросекунд.
Стоит отметить, что вывод производится силами одной только периферии -- одним таймером, одним каналом ДМА и собственно ЦАПом. Полностью аппаратно. Процессор здесь не задействован и никакой код для формирования сигнала не выполняет.
В принципе, в формировании разнообразных сигналов силами ЦАПа STM32 никакой новации нет, но чтобы это делали на МК ценой 75 центов (50 руб) мне как-то раньше видеть не приходилось.
В принципе, в формировании разнообразных сигналов силами ЦАПа STM32 никакой новации нет, но чтобы это делали на МК ценой 75 центов (50 руб) мне как-то раньше видеть не приходилось.
Ну так если периферия полноценна и ни чем ни отличается от того что имеется в более старших и дорогих STM чему удивлятся. Единственное различие наверное это дискретность, на более быстрых камнях диапазон будет несколько шире.
Заинтриговали, полез смотреть на АЛИ и? Что один, что второй оба проца идут практически по одной и той же оптовой цене в 40-45 руб за корпус, а можно найти STM32F051c8t6 даже и за 35руб/шт. Просто маркировку ошибочно нанесли .. могу ещё понять, когда разница в цене "в разы", а так - стоит ли потраченное время - результату? ;)
Но, в целом - интересно, можете поиследовать ещё какие-нибудь пары? К примеру можно ли найти "дешевый аналог" STM32F429 ? А то как-то дороговастенько стоит..
Вас не затруднит указать, где точно они продаются по такой цене? Мы либо какие-то разные али посещаем, либо я окончательно разучился пользоваться поиском. Мысли о том, что вас преследуют какие-то дикие галлюцинации, я, разумеется, допустить не могу.
Я как-то не догоняю всей глубины этой мысли. Вы имели в виду, что если разница в разы есть, то смысл раскуривать периферию появляется, а если нет, то исчезает? Мне почему-то такой довод видится очень своеобразным и необычным.
Как-то так сложилось, что у меня нет задач под подобное железо и по этой причине я не особо ими интересуюсь.
Если более быстрой будет периферия, то да, а так и на 051 все упирается в 1 мегасемпл/с быстродействия ЦАПа, с чем данный МК прекрасно справляется, и никакая дополнительная производительность тут выгод не даст.
Под оптовыми ценами на али я понимаю "цена за 1шт", где в лотах стоит стоимость доставки. Вы наверное смотрите "бесплатная доставка". Не знаю, где и что Вы ищете, но вот память 512кб 50нс в количестве 5шт мне пришла по цене 42руб за корпус. Одну потестировал - вроде даже и рабочая. :)
У вас не возникает легкого ощущения, что вы вообще-то не на тот вопрос отвечаете? Я ж вроде о простой вещи спросил: где точно они продаются по названной вами цене? Махание рукой в неопределенном направлении не является ответом ни на какой вопрос, как не является подтверждением ваших слов и упоминание о совершенно другом товаре, удачно прикупленном вами по отличной цене.
Попутно вас информирую, что там "где в лотах стоит стоимость доставки", эта самая стоимость имеет очень интересное свойство -- безальтернативно меняться в зависимости от количества заказанного товара. Возможно именно упоминавшиеся вами "STM32F051c8t6 за 35руб/шт" при попытке заказать их в количестве 5 штук, преподносят как раз такой "сюрприз" незадачливому покупателю:
И какие бы сказки про белого бычка, кто тут ни рассказывал, можно купить только по такой цене и никак дешевле.
Значит у нас с Вами разный АЛИ .. ладно, мне это не интересно.
P.S. А Вы на самой алибабе - зареганы? (А то было дело, заключал там контракт давненько уже .. до сих пор помнят, и рекламку шлют и с днюхой проздравляет продаван) может в этом дело?
Если более быстрой будет периферия, то да, а так и на 051 все упирается в 1 мегасемпл/с быстродействия ЦАПа, с чем данный МК прекрасно справляется, и никакая дополнительная производительность тут выгод не даст.
Это было лирическое отступление не более того. В целом если на борту имеется недокументированная периферия это хорошо. И тут вступает в силу заявление о недостатке библиотек SPL и выше. Понятно что для ее использования необходимо юзать CMSIS, так как скорее всего надо будет допиливать библиотеку SPL. Хотя проект созданный для RBT я без проблемм заливал в C8T, понятное дело простенькие, но все же.
Убеждать на голубом глазу, что 051 даже дешевле, чем 030, вам было интересно, а как выяснилось, что это не так, то интерес сразу пропал? Понимаю.
А мне зачем? Я поставками в промышленных объемах не занимаюсь, а себе любимому и на али куплю.
Ничего не нужно допиливать. Что в спл, что хал-е указываем, что камень у нас, что ни на есть арийских кровей STM32F051C8T6 и все работает искаропки.
Ничего не нужно допиливать. Что в спл, что хал-е указываем, что камень у нас, что ни на есть арийских кровей STM32F051C8T6 и все работает искаропки.
В целом да, камни одной линейки, вероятно и ID одинаковы, следовательно STLink ругаться не будет.
В целом да, камни одной линейки, вероятно и ID одинаковы, следовательно STLink ругаться не будет.
Подозреваю, что они ещё и от одного производителя, следовательно и Кейл ругаться не будет.
Итак, поднимаю тему.
Заинтересовался МК от Silabs, ко мне уже едет парочка образцов, выяснил, что смогу программировать их, используя Keil v5 (с которым и так для STM32 работаю).
Поставил через пак менеджер DFP для нужной серии, в девайс менеджере камни появились, в селекторе при создании проекта - нет...что делать?