打印
[其他ST产品]

关于STR710读写片外Nor Flash SST39VF1601

[复制链接]
2665|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Liuyk_0321|  楼主 | 2009-10-31 08:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STR710 Demo的FlashProgrammer例程看不明白,请明白人给讲讲,谢谢!

void ExtFlash_ChipErase(void)
{
FLASH_WRITE(0x5555, 0xaaaa);   //数据应该是0xaa,为什么要写成0xaaaa
FLASH_WRITE(0x2aaa, 0x5555);   //数据应该是0x55,为什么要写成0x5555
FLASH_WRITE(0x5555, 0x8080);  //
FLASH_WRITE(0x5555, 0xaaaa);
FLASH_WRITE(0x2aaa, 0x5555);
FLASH_WRITE(0x5555, 0x1010);
Check_Toggle_Ready(0);
}

#define FLASH_WRITE(addr, word)   (*FLASH_ADDR(addr) = FLASH_DATA(word))

//为什么把写入的数据要做下面这样的变换?
#define FLASH_DATA(n) ( (n) >> 0  & 0x8000 /* D15 -> D15 */ \
      | (n) >> 1  & 0x2000 /* D14 -> D13 */ \
      | (n) >> 2  & 0x0800 /* D13 -> D11 */ \
      | (n) >> 3  & 0x0200 /* D12 -> D9  */ \
      | (n) >> 4  & 0x0080 /* D11 -> D7  */ \
      | (n) >> 5  & 0x0020 /* D10 -> D5  */ \
      | (n) >> 6  & 0x0008 /* D9  -> D3  */ \
      | (n) >> 7  & 0x0002 /* D8  -> D1  */ \
      | (n) << 7  & 0x4000 /* D7  -> D14 */ \
      | (n) << 6  & 0x1000 /* D6  -> D12 */ \
      | (n) << 5  & 0x0400 /* D5  -> D10 */ \
      | (n) << 4  & 0x0100 /* D4  -> D8  */ \
      | (n) << 3  & 0x0040 /* D3  -> D6  */ \
      | (n) << 2  & 0x0010 /* D2  -> D4  */ \
      | (n) << 1  & 0x0004 /* D1  -> D2  */ \
      | (n) << 0  & 0x0001 /* D0  -> D0  */ )
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

66

帖子

1

粉丝