CSM32RV20开发(二):Si24R1 通信模式调试

本文详细介绍了如何使用CSM32RV20开发板通过SPI与Si24R1模块进行通信,包括中断向量表和系统时钟初始化、串口和SPI外设初始化、CE、CSN和IRQ引脚的GPIO配置。重点讲解了Si24R1的通信模式、SPI读写函数以及TX_mode和RX_mode的配置。在通信判断中,强调了中断处理的注意事项和使用ee_printf()函数优化代码体积的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:

通过CSM32RV20开发平台,使用硬件SPI接口与Si24R1进行通信,通信成功后,通过串口打印数据。

实现过程:

1.中断向量表和系统时钟初始化

在IDE里新建项目后,都会包含CLIC_Init()和System_Clock_Init()两个函数。中断向量表初始化,系统中断初始化,用户无需关心。系统时钟初始化函数中,可以方便的选中时钟源、时钟分频系数、外设时钟使能和RC频率选择。

int main(void)
{
   

    ///----System Init ---------------------------------------------------------------------------------------------
    CLIC_Init();//中断向量表初始化
    System_Clock_Init();//系统时钟初始化
void System_Clock_Init(void)//系统时钟初始化
{
   
    //时钟源开关
    CMU->SRC_EN  = 1<<1   //RCOSC    bit[1]:0-off, 1-on
                  |1<<0;  //crystal  bit[0]:0-off, 1-on

    //外设和内核时钟来源选择
	CMU->CLK_SEL = 1<<2   //phripheral  bit[3:2]:0-RCOSC, 1-crystal, 2-LSI(3K), 3-reserved
                  |1<<0;  //cpu         bit[1:0]:0-RCOSC, 1-crystal, 2-LSI(3K), 3-reserved

    //设置时钟分频系数
    CMU->CLK_DIV = 0<<10  //RTC         bit[14:10]:0-2, 1-2, 2-2, 3-2, 4-4, 5-4, 6-6, 7-6 ......
                  |0<<5   //phripheral  bit[9:5]:0-1, 1-1, 2-2, 3-3, 4-4, 5-5,......31-31
                  |0<<0;  //CPU         bit[9:5]:0-1, 1-1, 2-2, 3-3, 4-4, 5-5,......31-31

    //外设时钟使能
    CMU->PER_EN  = 1;    //bit[0]:0-off, 1-on

    //RC频率选择
    CMU_RC_DEFAULT->RC_DEFAULT = 0; //bit[0]:0-16MHz, 1-32MHz

}

2.外设初始化

2.1外设初始化(串口)

串口初始化:选中UART1,UART1即可以用作烧录使用(开发板串口默认使用UART1),又可以调用打印,方便数据输出。UART1:PA6:TX1,复用配置AF0(默认)。PA5:RX1,复用配置AF0(默认)。

UART_Init_case1(UART1);   //串口初始化

由于开发板上使用的晶振为32MHz,那么我们设置0x0116<<8串口波特率就是115200

   UARTx->CTRL = 0<<25        //接收中断使能: 0-off,1-on
                 |0<<24        //发送中断使能:0-off,1-on
                 |0x0116<<8    //波特率(对应16M时钟):
                               //0x1a0b-2400,0x0683-9600,0x0341-19200,0x0116-57600,0x008b-115200
                               //0x0045-230400,0x0023-460800,0x0011-921600,0x000d-1128800


                 |1<<6         //模式选择:0-模式0,1-模式1,2/3-模式2
                 |0<<5         //多处理器使能
                 |1<<4         //接收使能
                 |0<<3         //发送数据bit8
                 |0<<2;        //接收数据bit8

在这里插入图片描述

2.2外设初始化(SPI)

SPI初始化,选中非中断模式。Si24R1采用四线制SPI,与MCU连接共6根线。Si24R1芯片引脚介绍(MOSI和MISO直接与MCU的硬件SPI对应连接即可,即MOSI与SPI1_MOSI连接)。CE,芯片开启信号,激活 RX 或 TX 模式。CSN,SPI 片选信号。SCK,SPI 时钟信号。MOSI,SPI 输入信号。MISO,SPI输出信号。IRQ,可屏蔽中断信号(可以通过0x00寄存器CONFIG配置屏蔽),低电平有效。
在这里插入图片描述

 SPI_Init_case1(SPI1);     //SPI初始化,非中断模式

CSM32RV20,硬件SPI1引脚说明:PA2-SPI1_SCK,PA3-SPI1_MISO,PA4_SPI1_MOSI.

   if(SPIx==SPI1)
    {
   
        //用户自选CSN,软件操作片选信号


        //配置SCK
        GPIO_MODE_Init(GPIOA, PIN2, GPIO_MODE_AF);  //PA2复用模式
        GPIO_AF_Init(GPIOA,  PIN2,  GPIO_AF0);  //PA2复用到SPI1_SCK

        //配置MISO
        GPIO_MODE_Init(GPIOA, PIN3, GPIO_MODE_AF);  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值