您好!
我已经使用现有的板载 TI LMK61E2芯片对我的器件进行了编程、以支持各种时钟频率。 我按照数据表 http://www.ti.com/lit/ds/symlink/lmk61e2.pdf 中提到的步骤 对我的器件上的 TI 时钟进行编程、并成功生成了请求的时钟频率和流量。
现在、我们将尝试在 LMK61E2片上 EEPROM 中保存配置的时钟频率、以使其在重新启动时保持不变。 很明显、我按照数据表(第21页)中提到的步骤保存 EEPROM、但是我遵循的序列不会将配置保存在 EEPROM 中。 请找到要保存在 EEPROM 上的我的编程序列。
影子寄存器声明
/*为167.380 MHz 频率设置的寄存器*/
{"R0"、0x0010}、{"R1"、0x010B}、{"R2"、0x0233}、{"R8"、0x08B0}、{"R9"、0x0901}、 {"R16"、0x1000}、{"R17"、0x1180}、
{"R21"、0x1501}、{"R22"、0x1600}、{"R23"、0x1720}、{"R25"、0x1900}、{"R26"、0x1A35}、 {"R27"、0x1B00}、{"R28"、0x1C01}、
{"R29"、0x1D5F}、{"R30"、0x1E00}、{"R31"、0x1F02}、{"R32"、0x2071}、{"R33"、0x2103}、 {"R34"、0x2224}、{"R35"、0x2327}、
{"R36"、0x2414}、{"R37"、0x2502}、{"R38"、0x2600}、{"R39"、0x2707}、{"R47"、0x2F00}、 {"R48"、0x3000}、{"R49"、0x3110}、
{"R50"、0x3200}、{"R51"、0x3300}、{"R52"、0x3400}、{"R53"、0x3500}、{"R56"、0x3800}、 {"R72"、0x4802}
然后 是用于寄存器写入的 WRITE_clockmode_frequency 数组(通过此步骤实现了频率)并保存配置。
/*保存到 TI 时钟的片上 EEPROM */
void bcm82251_WRITE_EEPROM_clockmode (uint8索引)
{
uint16_t reg49_val = OTU4_support[索引][27].Reg_value;
uint16_t reg56_val = OTU4_support[索引][32].Reg_value;
/*将1写入 R49.6,SRAM 设置*/
reg49_val =(reg49_val & 0xFFFF)|(0x0001 << 6);
OTU4_support[索引][27].Reg_value = reg49_val;
printf ("1.reg49_val %X、OTU4现在为%X\n"、reg49_val、OTU4_support[索引][27].ReG_value);
/* EEPROM 启动 R49.2 */
reg49_val =(reg49_val & 0xFFFF)|(0x0001 << 2);
OTU4_support[索引][27].Reg_value = reg49_val;
printf ("2.reg49_val %X、OTU4现在为%X\n"、reg49_val、OTU4_support[索引][27].ReG_value);
/*将0xBE 写入 R56 */
reg56_val =(reg56_val & 0xFFBE)|(0xBE);
OTU4_support[索引][32].Reg_value = reg56_val;
printf ("3.reg56_val %X、OTU4现在是%X\n"、reg56_val、OTU4_support[index][32].ReG_value);
/*将1写入 R49.0 */
reg49_val =(reg49_val & 0xFFFF)|(0x0001);
OTU4_support[索引][27].Reg_value = reg49_val;
printf ("4.reg49_val %X、OTU4现在为%X\n"、reg49_val、OTU4_support[索引][27].ReG_value);
_TIME_DELAY (1);
printf (" EEPROM 总周期包含%X\n"、OTU4_support[index][26].ReG_value);
/*将0x00写入 R56 */
OTU4_support[索引][32].Reg_value =(reg56_val 和0xFF00);
printf ("R56寄存器%X\n"、OTU4_support[index][32].Reg 值);
}
输出:
0000:00:54:13.999 EVB>时钟设置 EVB 2.
设置时钟频率= 167.380MHz
1.reg49_val 3155、OTU4现在为3155
2.reg49_val 3155、OTU4现在为3155
3.reg56_val 38BE、OTU4现在为38BE
4.reg49_val 3155、OTU4现在为3155
EEPROM 周期总数包含3000
R56寄存器3800
现在、我可以看到影子寄存器内容发生了变化、最终这些步骤必须引导 EEPROM 保存。 但 R48内容仍然显示为3000、这意味着该过程没有给出结果。
您能不能建议我出错的地方、还是我在数据表中遗漏了一些东西。 在重新启动后保存 EEPROM 内容时必须遵循的步骤是什么。