我怀疑连接到闪存的AVR控制器的内部数据总线的宽度。我主要是指Atmega328。数据表显示(第17页)“由于所有AVR指令都是16或32位宽,因此Flash被组织为 2/4/8 / 16K x 16.“。这意味着闪存数据总线宽度必须是16位?我无法看到任何提到16位宽的程序存储器数据总线(当然是控制器内部)。但总线为RAM似乎又是8位。只想澄清一下。
答案 0 :(得分:3)
Bit 8位AVR系列基于(修改过的)哈佛架构,您可以在其中拥有专用的程序和数据存储。程序存储器的数据路径确实是16位,而数据存储器仅为8位。
有趣的是,Atmel在开始时指出,这些是8位CPU。与8051或Rabbit等其他8位产品相比,这使它们看起来非常具有竞争力。由于16位程序数据路径,AVR在基准测试中表现非常出色。后来,当8位听起来有点过时时,Atmel决定将它们称为8/16位CPU。
答案 1 :(得分:1)
data sheet/complete第9页上的图7.1显示闪存完全没有连接到(8位)数据总线,只连接到地址总线。闪存的“数据”主要进入指令寄存器,并使用LPM
指令将该数据传输到寄存器中。请注意,在向闪存写入数据时,总是写入由(R1:R0)
指针(Z
指令)寻址的16位SPM
...并且SPM指令不能在“时钟周期”中表示“(第617页)