Как сказал Стивен, PIC не имеют уникальных серийных номеров, встроенных в них во время производства. Давайте поясним, что речь идет о числе, которое будет варьироваться между двумя чипами идентичной модели.
У большинства PIC есть код чипа, кодированный в них. Это может быть прочитано программистом PIC, чтобы определить тип PIC, к которому он подключен. Насколько я могу судить, только 12-битные PIC ядра не имеют такого чипа ID. Все остальные PIC могут быть идентифицированы электрически, хотя существует множество различных способов их перевода в режим программирования, а затем считывания идентификатора чипа. Программное обеспечение для программиста PIC, которое может идентифицировать произвольный PIC, не является тривиальным.
Если вы действительно имели в виду серийный номер, то он должен быть запрограммирован в детали после производства. Мы сделали это много раз. Во время процесса производственного тестирования, когда микропрограммное обеспечение запрограммировано в PIC, вы устанавливаете его так, чтобы оно также получало уникальный серийный номер и программу, которая также используется. Один простой способ - начать с основного файла HEX, созданного инструментами прошивки. Это содержит пустой серийный номер. Вы пишете небольшую программу, которая захватывает новый серийный номер в соответствии с вашей стратегией, читает основной HEX-файл, заменяет новый серийный номер пустым и записывает временный HEX-файл. Временный HEX-файл используется для программирования детали, а затем удаляется.
Для повышения надежности вы сохраняете состояние серийного номера в EEPROM в рабочем джиге, а не в файле на диске. Система запрашивает у джига новый номер, и этот джиг предназначен для того, чтобы никогда не выдавать один и тот же номер дважды. Когда диапазон присвоенных серийных номеров исчерпан, он отказывается работать. Это особенно полезно, если у вас есть удаленный производитель строительных блоков для вас. Таким образом, если они что-то испортят на компьютере и восстановят из резервной копии, он также не сбросит диапазон серийных номеров. Да, это действительно произошло.
Если серийный номер должен быть прочитан извне, то места для идентификатора пользователя, которые есть у большинства PIC, могут быть подходящим местом для его хранения. Они отличаются от общей памяти программ или EEPROM тем, что их можно прочитать, даже если чип защищен кодом.
Если вы получаете ваши PIC, запрограммированные микрочипом или дистрибьютором, вы обычно можете каким-то образом их сериализовать. Однако заводское программирование предназначено только для зрелых продуктов большого объема. Если вы думаете, что будете регулярно обновлять прошивку, не используйте заводское программирование. Время выполнения заказа велико, и вы будете застревать в старых версиях. Ваше устройство должно быть протестировано после того, как оно все равно будет собрано, поэтому добавление шага для программирования PIC обычно очень мало дополнительной нагрузки.