zoukankan      html  css  js  c++  java
  • spi 配置

    #define SPI_CFG0_REG                        (SPI_BASE+0x0000)
        CS_SETUP_COUNT  (cs_setup_count+1)*clk_period  clk_period SPI 的采样周期
        CS_HOLD_COUNT  保持时间 = (cs_hold_count +1) * clk_period
    #define SPI_CFG1_REG                        (SPI_BASE+0x0004)
        Get_tick_dly  如果spi的速度不够快,这三个比特可以帮助公差得到tick时间
        Packet_length  get_tick之间的时间范围取决于spi系统时钟是一个周期
        Packet_loop_cnt  9:0 位是一个数据包中的字节数,7:0
        Cs_idle_count 片选连续事务之间的空闲时间
        
    #define SPI_TX_SRC_REG                    (SPI_BASE+0x0008)
        全称 spi tx source address register
        如果设置了tx_dma_en,则要放在mos线上的数据将被预先保存在内存中,spi控制器会自动从内存中读取数据
    Spi_tx_src 定义spi控制器开始读取数据的内存地址形式
    #define SPI_RX_DST_REG                        (SPI_BASE+0x000c)
    全称 spi rx detination address register
    如果设置了rx_dma_en,来自miso行的接收数据将被spi控制器自动移动到内存
    Spi_rx_dst 定义spi控制器启动数据的内存地址
    #define SPI_TX_DATA_REG                        (SPI_BASE+0x0010)
        全称 spi tx data fifo
        tx fifo的深度是32字节
        写入这个寄存器将会有4个字节到tx fifo,tx fifo指针会自动移向接下来的四个字节,从这个寄存器读取将会从fifo读取4个字节,te fifo指针会自动移向下一个4字节
    #define SPI_RX_DATA_REG                        (SPI_BASE+0x0014)
        全称 spi rx data fifo
         从该寄存器读取将读取rx fifo的4个字节。 rx fifo指针会自动移向下一个4字节,写入这个寄存器将会写入4个字节到fifo,而rx fifo指针会自动移向下一个4字节
    #define SPI_CMD_REG                            (SPI_BASE+0x0018)
        全称 spi command register
        31:18 不能用,
        17   pause_ie     spi状态寄存器中的暂停标志的中断使能位
        16   finish_ie    spi状态寄存器中的结束标志的中断使能位
        15   tx_endian   定义是否从内存中反转数据直接存储器的尾数顺序  , 0: 不反过来(默认值)  仅在dma模式下受支持
        14   rx_endian   定义是否颠倒数据dma内存的尾数顺序 0: 不反 (默认)
    13   rxmsbf  表示从miso行接收到的数据先是msb,或者先不要将rxmsbf设置为1;否则设置为 0
    12   txmsbf  rxmsbf  表示从miso行接收到的数据先是msb,或者先不要将txmsbf设置为1;否则设置为 0
    11    tx_dma_en     要传输的数据的DMA模式使能位 0 :默认 不使能
    10    rx_dma_en     要接收的数据的DMA模式使能位 0 :默认 不使能
    9     cpol           控制时钟位的极性
    SCK为同步时钟  0 :CPOL =0  1:CPOL = 1
    8    cpha               在传输过程中定义了spi时钟格式0或spi时钟格式1
                        0 :CPHA = 0  1 : CPHA = 1
    7    cs_pol            控制片选极性位 0:Active low 1 :active high
    6    sample_sel       控制MISO的采样边沿 0:positive edge 1:negative edge
    5    cs_deassert_en     使能芯片选择取消确认模式的位 设置1使能这个模式
    4    pause_en         暂定模式的使能位  设置1使能这个模式
    2     RST
    1   resume             当控制器暂停空闲状态时使用
                        向该位写入1以触发spi控制器从闲置闲置状态转移到resum
    0   cmd_act            命令激活位
    将1写入此位以触发spi控制器启动事务
    #define SPI_STATUS0_REG                        (SPI_BASE+0x001c)
    1    pause     在暂停模式下的中断状态位
    将在spi控制器完成转换时设置,进入暂停闲置状态
    2    finish    在非暂停模式下的中断状态位
    将在spi控制器完成交易时进入闲置状态
    #define SPI_STATUS1_REG                        (SPI_BASE+0x0020)
            Busy   反映spi控制器的状态标志是否忙
                    0:busy     1:idle
    #define SPI_PAD_SEL_REG                        (SPI_BASE+0x0024)
            pad_macro_sel     选择哪个PAD组spi将使用
    #define SPI_CFG2_REG                        (SPI_BASE+0x0028)
            Sck_low_count        sck clock low time = (sck_low_count+1)*clk_period
            Sck_high_count        sck clock high time = (sck_high_count+1)*clk_period
    注:
    tick一般指os的kernel计时单位,用于处理定时、延时事件之类。一般使用硬件定时器中断处理tick事件

  • 相关阅读:
    信息安全算法
    另类装载问题
    分治法快速排序
    动态规划最长公共子序列
    java网络编程1
    Jndi和会话bean
    EJB初探
    JSF初探
    简单计算器
    关于坐火车
  • 原文地址:https://www.cnblogs.com/chjgongzuo/p/9056384.html
Copyright © 2011-2022 走看看