This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6747和nandflash连接问题



c6747支持8位的flash吗?如果支持连接图是怎么样的呢?  谢谢

第一次接触6000系列 ,希望能解释的详细些

  • 可以接8bit nand flash,下面的文档上有连接图。

    Figure 18-14. EMIFA to NAND Flash Interface
    http://www.ti.com/lit/ug/spruh91b/spruh91b.pdf

  • 谢谢  我想在想用nand boot模式 连接 片选ce的应该是CS2还是CS3?  我看手册介绍boot nand 要用cs3连接  但是后边寄存器配置的例子中却要求cs2连接flash的ce

  • 要接EMA_CS[3],bootloader手册上有说明。

    NAND Flash should be connected to EMA_CS[3] of the EMIFA peripheral 

    http://www.ti.com/lit/an/sprabb1c/sprabb1c.pdf

  • 6747的技术参考手册

    18.3.2.3.3 Example Using Hynix HY27UA081G1M

    这里是接的cs2  ,是因为这里没有配置为启动模式只是一个外部存储器的原因吗?

  • 是的,而且c6747不止nand flash boot一种boot mode,还有其他的boot mode。

  • 谢谢你之前的解答,现在我自己做了一个板子,正在调试,但是nandflash 读写的测试不通过,希望你帮我看一下这个原理图有没有错误

  • EMIF寄存器配置了么?时序量了么?

  • 程序主要是网上找的,里面的寄存器根据手册修改了 一些  但是读写测试结果如下

    函数FLASH_init() 里面有一个配置寄存器

    _resetEMIF里面也有但是看的不是很懂

    nandflashID.7z
  • Int16 _resetEMIF( Uint16 chip_select )
    {
         Uint32 emif_max_timeout = 0
            | ( 0  << 31 )      // Select Strobe    [ Normal ]
            | ( 0  << 30 )      // Extended Wait    [ Disabled ]
            | ( 15 << 26 )      // Write Setup      [ 151.5 ns ]
            | ( 31 << 20 )      // Write Strobe     [ 313.1 ns ]
            | ( 7  << 17 )      // Write Hold       [  70.7 ns ]
            | ( 15 << 13 )      // Read Setup       [ 151.5 ns ]
            | ( 31 << 7 )       // Read Strobe      [ 313.1 ns ]
            | ( 7  << 4 )       // Read Hold        [  70.7 ns ]
            | ( 3  << 2 )       // Turn Around      [  30.3 ns ]
            | ( 0  << 0 );      // Bus Size         [ 8-bit Bus ]
    
    
        switch ( chip_select )
        {
           case 3://2
                AEMIF_A1CR = emif_max_timeout;
    
                AEMIF_NANDFCR &= ~( 1 << 0 );       // NAND Flash [ OFF ]
                AEMIF_A2CR = emif_max_timeout;
    
                AEMIF_NANDFCR &= ~( 1 << 1 );       // NAND Flash [ OFF ]
                AEMIF_A3CR = emif_max_timeout;
    
                AEMIF_NANDFCR &= ~( 1 << 2 );       // NAND Flash [ OFF ]
                AEMIF_A4CR = emif_max_timeout;
    
                AEMIF_NANDFCR &= ~( 1 << 3 );       // NAND Flash [ OFF ]
                                                
                break;
           case 2://3
                AEMIF_A2CR = emif_max_timeout;
    
                AEMIF_NANDFCR &= ~( 1 << 1 );       // NAND Flash [ OFF ]
                break;
            case 4:
                AEMIF_A3CR = emif_max_timeout;
                AEMIF_NANDFCR &= ~( 1 << 0 );       // NAND Flash [ Off ]
                break;
            case 5:
                AEMIF_A4CR = emif_max_timeout;
                AEMIF_NANDFCR  &= ~( 1 << 0 );       // NAND Flash [ Off ]
                break;
            default:
                return -1;
        }
        return 0;
    }
    
    
    Int16 _setupEMIF( Uint16 chip_select, Uint32 emif_timing, Uint16 emif_mode )
    {
    
    	AEMIF_A1CR = emif_timing;
    
    	AEMIF_A2CR = emif_timing;
    	AEMIF_A3CR = emif_timing;
    	AEMIF_A4CR = emif_timing;
       	AEMIF_NANDFCR |= 0x;
    
        return 0;
    }
    

    你好,我又仔细看了一下 函数 这个 restEMIF 和setupEMIF 里面对AEMIF_AnCR分别进行了配置  这是问什么? 配置的参数是怎么确定的? 我按照手册18.3的配置例子计算出的时间参数应该在哪个函数配置?         

    谢谢

  • 附件里有TI官主的NAND烧写程序。

    NAND时序配置可以参考:http://processors.wiki.ti.com/index.php/Programming_Asynchronous_EMIF_on_OMAP-L13x_/_C674x_/_AM1x

    flash_writers.zip
  • ..............解决了  是我的仿真器 有问题,不知道,不能运行烧写程序一运行就是暂停后在汇编看就是 停留在idle  或者都是nop  而且连上仿真器后boot引脚的电压有的会被拉低。。。。。 其他的程序在ram运行倒是正常的。。。。 不明白为什么

    感谢上面各位的耐心回答!