Xin trợ giúp về giao tiếp dsPICMC710 với dual port RAM CY7C09349AV

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • long4
    Nhập môn đệ tử
    • Jun 2008
    • 6

    #1

    Xin trợ giúp về giao tiếp dsPICMC710 với dual port RAM CY7C09349AV

    Chào các bạn,
    Mình đang làm 1 cái project giao tiếp dsPIC với dual-port RAM CY7C09349AV. Đây là RAM đồng bộ, thời gian truy xuất 9ns (xin xem file đính kèm);
    dsPIC MC710 được cấu hình hoạt động ở 40MIPS. Vì là giao tiếp song song nên mình cấu hình cho dsPIC như sau:
    dung lượng RAM: 4kx18, nhưng mình chỉ dùng 256x18, nên chỉ có 8 đường địa chỉ.
    RG2-RG3: A0-A1
    RG6-RG9: A2-A5
    RG12-RG13: A6-A7
    Data bus: dùng 16 đường trên tổng số 18 đường data của RAM, (D8 và D17 của RAM nối Vcc)
    RA0-RA7: D0-D7
    RD8-RD15: D9-D16
    Control signals:
    RA14: Clock : tín hiệu đồng bộ
    RA15: RW: tín hiệu read/write
    RG14: CE : Chip enable
    RG15: OE: Open enable, tín hiệu này kéo xuống low khi đọc từ RAM để cho phép data xuất ra khỏi RAM
    Các chân điều khiển, data và address không dùng được nối mức cao.
    Tổng cộng 28 chân được dùng cho giao tiếp.

    Các hàm truy xuất mình viết như sau

    //my code define
    #define CLK LATAbits.LATA14 //trigger every HIGH signal
    #define RWL LATAbits.LATA15 //LOW for WRITE, HIGH for read
    #define CE LATGbits.LATG14 //Active HIGH
    #define OEL LATGbits.LATG15 //Active LOW, for read

    #define Convert(add) ((add<<6)&0x3000)|((add<<4)&0x03C0)|((add<<2)&0x00 03)

    #define HI 1
    #define LO 0

    void InitConfig(){
    int16_T statRead = 0;

    //Address, CE, OE output
    statRead= TRISG;
    TRISG = statRead&(~0xF3CC);

    //Clock, RW output
    statRead= TRISA;
    TRISA = statRead&(0x3FFF);

    CE = HI;
    //OEL = LO;

    /* Configuration ADCHS */
    AD1PCFGL = (0);
    AD1PCFGH = AD1PCFGH|(0x00C0);
    AD2PCFGL = (0);

    }
    void ConfigRead(){
    int16_T statRead = 0;

    //data input
    statRead= TRISA;
    TRISA = statRead|(0x00FF);
    statRead= TRISD;
    TRISD = statRead|(0xFF00);
    RWL = HI;
    OEL = LO;
    }

    void ConfigWrite(){
    int16_T statRead = 0;

    //data input
    statRead= TRISA;
    TRISA = statRead&(~0x00FF);
    statRead= TRISD;
    TRISD = statRead&(~0xFF00);

    RWL = LO;
    OEL = HI;

    }

    uint16_T Read(uint8_T address){
    // ConfigRead before running this code

    uint16_T data;
    uint8_T i;
    //OEL = LO;
    LATG= (LATG&0xCC33)|(Convert(address));
    CLK = HI; //trigger the memory
    for(i=0;i<2;i++); //wait for 1 us ??
    data= (PORTD&0xFF00)|(PORTA&0x00FF); //data on the bus
    CLK = LO;
    return data;
    }

    void Write(uint8_T address, uint16_T data){
    uint8_T i;
    // ConfigRARDOutput before running this code
    //OEL = HI;
    LATG= (PORTG&0xCC33)|(Convert(address));

    LATD= (PORTD&0x00FF)|(data&0xFF00); //keep RD0-RD7
    LATA= (PORTA&0xFF00)|(data&0x00FF); //keep RA8-RA15
    CLK = HI; //trigger the memory
    for(i=0;i<2;i++); //wait for 1 us ??
    CLK = LO;
    }

    Mình đã cố gắng thay đổi thời gian chờ của xung CLK (vòng lặp for) để đồng bộ tín hiệu nhưng vẫn không truy xuất được RAM.
    Bạn nào có kinh nghiệm xin vui lòng góp ý, chân thành cảm ơn.
    Positive feedbacks are welcome, thanks alot.
  • long4
    Nhập môn đệ tử
    • Jun 2008
    • 6

    #2
    mình không up file được, các bạn xem link datasheet của RAM này http://www.cypress.com/?cache=0&l=1&...1050&rid=13330

    Comment

    • long4
      Nhập môn đệ tử
      • Jun 2008
      • 6

      #3
      Anh Nam ơi, check dùm em với.

      Comment

      • tungnh
        Đệ tử 5 túi
        • Sep 2007
        • 94

        #4
        Bạn nên cho sơ đồ mạch (file SCH -> chuyển sang file PDF ) bạn post code lập trình dưới dạng code nhìn cho dễ.
        Windows CE 6 R3

        Comment

        • of_dreams
          Nhập môn đệ tử
          • Jul 2011
          • 3

          #5
          Em chào anh! Giờ em cũng đang tìm hiểu về dual port RAM ạ! Mong a giúp đỡ
          Hiện tại, em đang cần mua dual port RAM tại Việt Nam. Em có thể dùng loại nào ạ!
          Em cám ơn

          Comment

          Working...