⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi_prog.psm

📁 利用Picoblaze实现对SPI flash的控制
💻 PSM
📖 第 1 页 / 共 5 页
字号:
                        ;KCPSM3 Program - UART programming of SPI Flash memory on Spartan-3E Starter Kit.
                        ;
                        ;
                        ;Ken Chapman - Xilinx Ltd
                        ;
                        ;Version v1.00 - 11th November 2005
                        ;
                        ;This program uses a 115200 baud UART connection with XON/XOFF flow control
                        ;to allow a standard MCS file for the configuration of a Spartan-3E device to
                        ;be programmed into the ST Microelectronics M25P16 device on the board.
                        ;
                        ;
                        ;
                        ;As well as the port connections vital to communication with the UART and the SPI
                        ;FLASH memory, there are additional port connections used to disable the other
                        ;devices sharing the SPI bus on the Starter Kit board. Although these could have been
                        ;controlled at the hardware level, they are included in this code to aid
                        ;future investigations of communication with the other SPI devices using PicoBlaze.
                        ;
                        ;
                        ;
                        ;
                        ;Port definitions
                        ;
                        CONSTANT status_port, 00               ;UART and filter status input
                        CONSTANT tx_data_present, 01           ;  Transmitter  data present - bit0
                        CONSTANT tx_half_full, 02              ;    FIFO          half full - bit1
                        CONSTANT tx_full, 04                   ;                       full - bit2
                        CONSTANT rx_data_present, 08           ;               data present - bit3
                        CONSTANT rx_half_full, 10              ;  Receiver        half full - bit4
                        CONSTANT rx_full, 20                   ;    FIFO               full - bit5
                        ;
                        CONSTANT UART_read_port, 01            ;UART Rx data input
                        ;
                        CONSTANT UART_write_port, 10           ;UART Tx data output
                        ;
                        ;
                        CONSTANT SPI_control_port, 08          ;SPI clock and chip selects
                        CONSTANT SPI_sck, 01                   ;                  SCK - bit0
                        CONSTANT SPI_rom_cs, 02                ;    serial rom select - bit1
                        CONSTANT SPI_spare_control, 04         ;                spare - bit2
                        CONSTANT SPI_amp_cs, 08                ;     amplifier select - bit3
                        CONSTANT SPI_adc_conv, 10              ;          A/D convert - bit4
                        CONSTANT SPI_dac_cs, 20                ;           D/A select - bit5
                        CONSTANT SPI_amp_shdn, 40              ;       amplifier SHDN - bit6
                        CONSTANT SPI_dac_clr, 80               ;            D/A clear - bit7
                        ;
                        CONSTANT SPI_output_port, 04           ;SPI data output
                        CONSTANT SPI_sdo, 80                   ;   SDO - bit7
                        ;
                        CONSTANT SPI_input_port, 02            ;SPI data input
                        CONSTANT SPI_sdi, 80                   ;             SDI - bit7
                        CONSTANT SPI_amp_sdi, 40               ;   amplifier SDI - bit6
                        ;
                        ;
                        ;
                        ;
                        ;Special Register usage
                        ;
                        NAMEREG sF, UART_data                  ;used to pass data to and from the UART
                        ;
                        ;
                        ;Useful data constants
                        ;
                        ;
                        ;Constant to define a software delay of 1us. This must be adjusted to reflect the
                        ;clock applied to KCPSM3. Every instruction executes in 2 clock cycles making the
                        ;calculation highly predictable. The '6' in the following equation even allows for
                        ;'CALL delay_1us' instruction in the initiating code.
                        ;
                        ; delay_1us_constant =  (clock_rate - 6)/4       Where 'clock_rate' is in MHz
                        ;
                        ;Example: For a 50MHz clock the constant value is (10-6)/4 = 11  (0B Hex).
                        ;For clock rates below 10MHz the value of 1 must be used and the operation will
                        ;become lower than intended.
                        ;
                        CONSTANT delay_1us_constant, 0B
                        ;
                        ;
                        ;Useful constants
                        ;
                        ;
                        ;ASCII table
                        ;
                        CONSTANT character_a, 61
                        CONSTANT character_b, 62
                        CONSTANT character_c, 63
                        CONSTANT character_d, 64
                        CONSTANT character_e, 65
                        CONSTANT character_f, 66
                        CONSTANT character_g, 67
                        CONSTANT character_h, 68
                        CONSTANT character_i, 69
                        CONSTANT character_j, 6A
                        CONSTANT character_k, 6B
                        CONSTANT character_l, 6C
                        CONSTANT character_m, 6D
                        CONSTANT character_n, 6E
                        CONSTANT character_o, 6F
                        CONSTANT character_p, 70
                        CONSTANT character_q, 71
                        CONSTANT character_r, 72
                        CONSTANT character_s, 73
                        CONSTANT character_t, 74
                        CONSTANT character_u, 75
                        CONSTANT character_v, 76
                        CONSTANT character_w, 77
                        CONSTANT character_x, 78
                        CONSTANT character_y, 79
                        CONSTANT character_z, 7A
                        CONSTANT character_A, 41
                        CONSTANT character_B, 42
                        CONSTANT character_C, 43
                        CONSTANT character_D, 44
                        CONSTANT character_E, 45
                        CONSTANT character_F, 46
                        CONSTANT character_G, 47
                        CONSTANT character_H, 48
                        CONSTANT character_I, 49
                        CONSTANT character_J, 4A
                        CONSTANT character_K, 4B
                        CONSTANT character_L, 4C
                        CONSTANT character_M, 4D
                        CONSTANT character_N, 4E
                        CONSTANT character_O, 4F
                        CONSTANT character_P, 50
                        CONSTANT character_Q, 51
                        CONSTANT character_R, 52
                        CONSTANT character_S, 53
                        CONSTANT character_T, 54
                        CONSTANT character_U, 55
                        CONSTANT character_V, 56
                        CONSTANT character_W, 57
                        CONSTANT character_X, 58
                        CONSTANT character_Y, 59
                        CONSTANT character_Z, 5A
                        CONSTANT character_0, 30
                        CONSTANT character_1, 31
                        CONSTANT character_2, 32
                        CONSTANT character_3, 33
                        CONSTANT character_4, 34
                        CONSTANT character_5, 35
                        CONSTANT character_6, 36
                        CONSTANT character_7, 37
                        CONSTANT character_8, 38
                        CONSTANT character_9, 39
                        CONSTANT character_colon, 3A
                        CONSTANT character_fullstop, 2E
                        CONSTANT character_semi_colon, 3B
                        CONSTANT character_minus, 2D
                        CONSTANT character_plus, 2B
                        CONSTANT character_comma, 2C
                        CONSTANT character_less_than, 3C       ;'<'
                        CONSTANT character_greater_than, 3E    ;'>'
                        CONSTANT character_open, 28            ;'('
                        CONSTANT character_close, 29           ;')'
                        CONSTANT character_divide, 2F          ;'/'
                        CONSTANT character_equals, 3D
                        CONSTANT character_space, 20
                        CONSTANT character_CR, 0D              ;carriage return
                        CONSTANT character_LF, 0A              ;line feed
                        CONSTANT character_question, 3F        ;'?'
                        CONSTANT character_dollar, 24
                        CONSTANT character_exclaim, 21         ;'!'
                        CONSTANT character_BS, 08              ;Back Space command character
                        CONSTANT character_XON, 11             ;Flow control ON
                        CONSTANT character_XOFF, 13            ;Flow control OFF
                        ;
                        ;
                        ;Scratch Pad Memory Locations
                        ;
                        ;
                        CONSTANT ISR_preserve_s0, 00           ;preserve register during ISR
                        ;
                        CONSTANT page_address_h, 01            ;Remember page address for SPI boundary checking.
                        CONSTANT page_address_m, 02            ;high, middle and low bytes
                        CONSTANT page_address_l, 03
                        ;
                        CONSTANT SPI_control_status, 04        ;SPI status signals
                        ;
                        ;
                        ;
                        ;Store up to one line of an MCS file as bytes
                        ;A typical data line consists of:-
                        ;:     Start character which is not stored
                        ;10    Number of data bytes included (16 in this case)
                        ;aaaa  Lower 16-bits of the storage address
                        ;00    Record type (data in this case)
                        ;dddd...   Data bytes (typically 16 which is the maximum)
                        ;cc    Checksum
                        ;CR/LF Line will end in carriage return and/or line feed which is not stored.
                        ;
                        ;So a total of 21 could be stored before processing.
                        ;
                        CONSTANT line_start, 2B                ;21 bytes until end of memory
                        ;
                        ;
                        ;Initialise the system and welcome message
                        ;
                        ;
            cold_start: CALL SPI_init                          ;initialise SPI bus ports
                        CALL delay_1s                          ;delay because UART is fast and JTAG startup sequence can be slow
                        ENABLE INTERRUPT                       ;Interrupt is used for XON/XOFF flow control
         welcome_start: CALL send_CR
                        CALL send_welcome                      ;start up message and version number
                        ;
                        ;Main menu and command selection
                        ;
                        ;
                        ;
            warm_start: CALL send_Menu                         ;Menu and command selection
                prompt: CALL send_CR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -