阅读和理解MCU数据表和代码

时间:2012-04-05 11:55:35

标签: microcontroller specifications electronics datasheet

是否有任何有关从MCU制造商那里阅读源代码示例的提示。 我是mcu编程的新手,目前我有一个MCU,数据表和示例代码。但问题是样本代码似乎是为有经验的用户编写的。关于他们为什么初始化RS232,他们为什么设置端口1的第4位等等的问题太多了,

您是否有阅读或链接的提示我在哪里可以获得有关如何阅读MCU的数据表和示例代码的信息?

任何评论或链接都表示赞赏。

谢谢

2 个答案:

答案 0 :(得分:2)

我猜经验是我能给出的唯一答案。就像编程一般,随着时间的推移,你获得经验,学习流行语和概念。使用微控制器,您可以学习读取数据表,原理图等。了解开漏,开路集电极,弱上拉等。对于串行端口,由于某种原因,它们总是过于复杂。微控制器和串口最困难的部分通常是找出合适的时钟除数编程器,一些微控制器串口是直接的,有些是过于复杂,有些文档好,有些文档不好等等。

另一个答案是数据表总是错误的。信息总是存在差距,你必须要弄清楚。不要仅使用数据表在vaccuum中编写数千行代码,将少量代码写入几行到几十个,测试并继续,在编程时可以在一天内编写和调试更多行代码数据表比其他路径。数据表通常不是由实际设计硬件的工程师编写的,有时是初级工程师或非工程师。有时候信息是完全错误的,有时文件是用于与你所拥有的不同但相似的部分。如果他们提供的软件实际上做的事情,它有时(并不总是)比数据表更准确(当我说数据表假设用户手册,程序员参考手册,无论供应商调用文档与寄存器,地址和位定义为硬件)。

如果你有足够的时间和经验,你可能会发现,如果你采取足够广泛的观点,一些供应商倾向于更好地向用户提供信息,而其他供应商则没有,有些人将秘密埋葬在图书馆,有时以二进制形式和不是来源。有时秘密被埋在编译器和他们提供的其他工具中(好的是回到apis和库)。我倾向于将这些公司列入黑名单,但有时你总是不能。例如,ARM在提供信息方面做得非常好。问题是它们有如此多的内核,每个内核都有很多选项,它们本质上非常相似(支持相同的指令集),因此很难对那个时刻所使用的处理器进行排序,而不是来自文档。 Atmel,关于atmel的一些难以理解的东西,文档通常远高于标准,但更多关于atmel的东西使它们受到客户的欢迎。你将永远不会看到一个类似追随者,文化,选择一个词的arduino,例如微芯片pic。有很多照片追随者,但它不像atmel世界(在arduino事件发生之前就已存在)。

另一个注意事项,您可能无法理解单个示例程序和单个数据表中产品的历史记录,可能存在已用于多代芯片的代码,例如可能需要一些代码通过较旧的芯片或较新的芯片,并共享相同的代码,操作位。这一点可能有意义看一个数据表,没有意义看另一个。这是黑客攻击的地方,在没有尝试的情况下,看看会发生什么。也许研究一下这个代码据说支持它的家庭中的其他部分可能更有意义。

谷歌是你的朋友或任何喜欢的搜索引擎,找到特定设备或其他任何东西的开源代码和其他项目。在这个级别上需要黑客攻击,我不会在糟糕的意义上使用该术语,在某种意义上你必须尝试一些在数据表中记录的内容,看看它是否真的有效,如果没有,那么看看如果可能的话它会做什么,看看其他源代码,看看你是否可以搞清楚。就像没有完美的汽车可以获得每加仑无限英里,完全安全,永恒,并且价格低廉,没有完美的芯片,完美的数据表和示例代码。如果你想在这个软件/硬件级别工作,你必须弄清楚,不要害怕让芯片冒出一些烟雾(如果你让一点点的话,芯片中的烟雾量是有限的它不会工作)等等。

如果您没有具体询问您正在使用的mcu或注册的原因是因为它是闭源产品或NDA背后的原因,那么您可能有权访问制造该产品的公司并且您应该能够得到支持从他们。通常比你从没有签署NDA的公司获得更好的支持。不是开源文档,开源公司是坏的,只是如果您购买的公司对您感兴趣,以显示内部受保护的信息,他们感兴趣,足以让您更好地访问制作/了解产品的真正工程师。如果情况并非如此,并且您可以谈论它,不要害怕只是向SO发布有关寄存器和您想知道的位的问题。

答案 1 :(得分:0)

MCU数据表中的示例代码和流程图是初始化特定外设(如RS232)的良好起点。 您只需从那里开始,并在MCU数据表中跟踪位信息及其功能。