Чтение и понимание таблицы данных и кодов MCU
Есть ли какие-нибудь советы по чтению примеров исходного кода от производителя микроконтроллеров? Я новичок в программировании mcu, в настоящее время у меня есть MCU, таблица данных и примеры кодов для них. Но проблема в том, что примеры кодов написаны для опытных пользователей. Слишком много вопросов о том, почему они инициализировали RS232, почему они установили 4-й бит порта 1 и т. Д.,
У вас есть советы по чтению или ссылки, где я могу получить информацию о том, как читать таблицы данных и образцы кодов MCU?
Любой комментарий или ссылка приветствуется.
Спасибо
2 ответа
Я думаю, опыт - единственный ответ, который я могу дать. Как и в случае с программированием в целом, со временем вы приобретаете опыт, а также изучаете модные слова и понятия. С помощью микроконтроллеров вы научитесь читать таблицы данных, схемы и т. Д. Узнайте об открытом стоке, открытом коллекторе, слабых подтягиваниях и т. Д. А для последовательных портов по какой-то причине они всегда слишком сложны. Сложнее всего с микроконтроллерами и последовательным портом, как правило, выяснить, что запрограммировать, чтобы получить правильные делители тактов, некоторые последовательные порты микроконтроллера просты, другие слишком сложны, некоторые документы хороши, некоторые документы плохи, и т. Д.
Другой ответ - данные всегда неверны. В информации всегда есть пробелы, которые нужно взломать, чтобы понять. Не пишите тысячи строк кода в вакууме, используя только таблицу данных, пишите небольшой объем кода от нескольких строк до нескольких десятков, тестируйте и двигайтесь дальше, вы можете получить больше строк и отладок за день, когда программирование из таблица данных, чем другой путь. Таблицы часто не написаны инженерами, которые фактически проектировали аппаратное обеспечение, иногда это младший инженер или не инженер. Иногда информация просто неверна, иногда документ для другой, но похожей части, чем у вас есть. Если они предоставляют программное обеспечение, которое на самом деле выполняет какие-то задачи, оно иногда (не всегда) является более точным, чем таблица данных (когда я говорю, что таблица данных предполагает руководство пользователя, справочное руководство для программистов, независимо от того, как поставщик вызывает документ с регистрами, адресами и определениями битов для аппаратное обеспечение).
Со временем и опытом вы можете обнаружить, если вы достаточно широко представите, что некоторые поставщики лучше справляются с предоставлением информации пользователям, другие нет, некоторые хоронят секреты в библиотеках, иногда в двоичном виде, а не в источниках. Иногда секреты скрыты в компиляторах и других инструментах, которые они предоставляют (хорошо, это относится к API и библиотекам). Я склонен вносить в черный список такие компании, но иногда вы не можете всегда. ARM, например, очень хорошо предоставляет информацию. проблема в том, что у них так много ядер с множеством опций, которые очень похожи по своей природе (поддерживают одни и те же наборы команд), что может быть трудно разобраться в том, что один процессор, который вы используете в тот момент, делает и не делает из документы. Atmel, что-то в Atmel, на что трудно ориентироваться, документы, как правило, намного выше номинальной, но более того, что-то в Atmel делает их популярными среди клиентов. Вы никогда не увидите ардуино, например, последователей, культуру, выберите слово, например, с изображением микрочипа. Есть много последователей картинок, но это не похоже на мир Atmel (который был там задолго до того, как произошла Arduino).
Еще одно примечание: вы можете не понять с помощью одной программы-примера и одной таблицы данных историю продукта, может существовать код, который использовался для нескольких поколений микросхем, и может быть, например, бит, который требуется старшему поколению. чип или более новый чип и совместно использовать тот же код, которым управляется бит. этот бит может иметь смысл, глядя на одну таблицу данных, и не имеет смысла смотреть на другую. это то место, где происходит взлом, попробуйте без, посмотрите, что произойдет. возможно изучите другие части в семье, которые, как говорят, поддерживают этот код, могли бы иметь больше смысла.
Google - ваш друг или любой другой любимый поисковик, найдите как можно больше открытого исходного кода и других элементов для конкретного устройства или чего-либо еще. На этом уровне требуется взлом, я не использую этот термин в плохом смысле, взломая в том смысле, что вам нужно попробовать некоторые из битов, описанных в таблице данных, посмотреть, действительно ли это работает, если нет, то посмотреть, что он делает, если это возможно посмотрите на другой исходный код и посмотрите, сможете ли вы понять это. Точно так же, как не существует идеального автомобиля, который получает бесконечные мили на галлон, полностью безопасен, длится вечно и стоит недорого, не существует идеального чипа с идеальной таблицей данных и образцом кода. Если вы хотите работать на этом программном / аппаратном уровне, вам нужно запачкать руки, не бойтесь выпустить немного дыма из чипов (в чипе есть ограниченное количество дыма, если вы позволяете даже немного это не сработает) и т. д.
Если причина, по которой вы не будете спрашивать конкретно о mcu или реестре, с которым вы работаете, заключается в том, что это продукты с закрытым исходным кодом или за NDA, то у вас, вероятно, есть доступ к компании, которая производит этот продукт, и вы сможете получить от них поддержку. Обычно лучшая поддержка, чем вы получили бы от компании, для которой вам не нужно подписывать NDA. Не то, чтобы открытый документ, компании с открытым исходным кодом - это плохо, просто если компания, у которой вы покупаете, заинтересована в вас, чтобы показать внутренне защищенную информацию, она заинтересована настолько, чтобы дать вам лучший доступ к реальным инженерам, которые сделали / знают продукт, Если это не так, и вы можете поговорить об этом, не бойтесь просто отправить вопрос в SO о регистре и битах, которые вас интересуют.
Пример кода и блок-схемы в таблицах данных MCU являются хорошей отправной точкой для инициализации определенного периферийного устройства (например, RS232). Вы просто начинаете отсюда и отслеживаете информацию о битах и ее действиях в таблице данных MCU.