اطلاعیه

Collapse
No announcement yet.

در راه اندازی آیسی فلش W25Q64

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    در راه اندازی آیسی فلش W25Q64

    سلام.
    من دارم روی پروژه کار می کنم که داده های رو روی آیسی فلش بنویسم و بخونم.حالا مشکل اینجاست بار اول وقتی روی آیسی می نویسم و می خونم ،ذاده ها درست نوشته میشه ولی داده جدید می نویسم و وقتی می خونم داده اشتباه نشون می ده و حتما باید آیسی پاک بشه و دوباره داده جدید نوشته بشه .
    حالا سوال من این که آیا همیشه برای نوشتن داده جدید، باید آیسی پاک بشه. :surprised:


    اینم برنامه که نوشتم
    [code=vb]
    کد:
       $regfile = "m32def.dat"
      $crystal = 8000000
      $hwstack = 100                     ' default use 32 for the hardware stack
    
    $swstack = 100                       ' default use 10 for the SW stack
    
    $framesize = 200
    
    '  $baud = 9600
        Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
         Config Lcd = 16 * 2
         Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
         Cursor Off
         Cls
          Config Portb.4 = Output
          Config Pinb.0 = Input
          Ddrb.0 = 0 : Portb.0 = 1
    Ss Alias Portb.4
    Dim Data_(6) As Byte , B As Byte , C As Byte , H As Byte , Dd(8) As Byte , S As Byte
    Ss = 1
    Spiinit
    
    
     '###########ENABLE WRITE#############
    Data_(1) = &H06
     Ss = 0
     Spiout Data_(1) , 1
     Ss = 1
     '##################### ################
    
    
     '############Ereas chip#################
     If Pinb.0 = 0 Then
     Data_(1) = &H60
     Ss = 0
     Spiout Data_(1) , 1
     Ss = 1
     End If
     '######################################
    
     Locate 1 , 1
     Lcd "WRITING ... "
    
       Gosub Send
    
      Waitms 2000
    
    
      Cls
    
    Do
    
    
    
    'Print Data_(5)
    
    
     Gosub Receive
    For H = 1 To 8
     Locate 1 , 1
    Lcd "READING   "
    Locate 2 , 1
    Lcd "BYTE(" ; H ; ")=" ; Dd(h) ; "      "
    
    Waitms 500
    Next
    
    Loop
    End                             'end program
    Send:
    
    ' For H = 0 To 7
    
    Data_(1) = 2                        'mode write
    Data_(2) = 0                        'address 2
    Data_(3) = 0                        'address 1
    Data_(4) = 100                       'address 0
    Data_(5) = 10 + S                      'data
    Ss = 0
    For C = 1 To 5
    
    Spiout Data_(c) , 1
    
    Next
    Data_(5) = 20
    Spiout Data_(5) , 1
     Data_(5) = 30
    Spiout Data_(5) , 1
    Data_(5) = 40
    Spiout Data_(5) , 1
    Data_(5) = 50
    Spiout Data_(5) , 1
     Data_(5) = 60
    Spiout Data_(5) , 1
    Data_(5) = 70
    Spiout Data_(5) , 1
    Data_(5) = 80
    Spiout Data_(5) , 1
    
    
     Ss = 1
    'Next
    Return
    Receive:
    Ss = 0
    Data_(1) = 3                        'mode Read
    Data_(2) = 0                        'address 2
    Data_(3) = 0                        'address 1
    Data_(4) = 100                       'address 0
    For C = 1 To 4
    
    Spiout Data_(c) , 1
    Next
    
    
    Spiin Dd(1) , 1
     Spiin Dd(2) , 1
    Spiin Dd(3) , 1
    Spiin Dd(4) , 1
     Spiin Dd(5) , 1
     Spiin Dd(6) , 1
    Spiin Dd(7) , 1
    Spiin Dd(8) , 1
    Ss = 1
    
    Return
    D:
    Data 50 , 60 , 70 , 80 , 90 , 100 , 110 , 120
    [/code]
لطفا صبر کنید...
X