[N32G03x] N32G030 SPI2不能使用

[复制链接]
1156|15
 楼主| liguhu138 发表于 2023-1-8 09:04 | 显示全部楼层 |阅读模式
        GPIO_InitType  GPIO_InitStructure;
        SPI_InitType  SPI_InitStructure;
                               
        RCC_EnableAPB1PeriphClk(RCC_APB2_PERIPH_GPIOA, ENABLE);
        RCC_EnableAPB1PeriphClk(RCC_APB2_PERIPH_SPI2, ENABLE);

        GPIO_InitStructure.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11; //CS SCK SO   
        GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
                                GPIO_InitStructure.GPIO_Alternate =  GPIO_AF0_SPI2;
        GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
                               
                                GPIO_InitStructure.Pin = GPIO_PIN_8;//SI   
        GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
                                //GPIO_InitStructure.GPIO_Alternate =  GPIO_AF0_SPI2;
        GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
                                     
        RCC_EnableAPB1PeriphReset(RCC_APB2_PERIPH_SPI2,ENABLE);//¸´Î»SPI1
                                //Delay_Ms(20);
        RCC_EnableAPB1PeriphReset(RCC_APB2_PERIPH_SPI2,DISABLE);//Í£Ö¹¸´Î»SPI1
                               
        SPI_InitStructure.DataDirection = SPI_DIR_DOUBLELINE_FULLDUPLEX;          //ÉèÖÃSPIµ¥Ïò»òÕßË«ÏòµÄÊý¾Ýģʽ:SPIÉèÖÃΪ˫ÏßË«Ïòȫ˫¹¤
        SPI_InitStructure.SpiMode = SPI_MODE_MASTER;                                                //ÉèÖÃSPI¹¤×÷ģʽ:ÉèÖÃΪÖ÷SPI
        SPI_InitStructure.DataLen = SPI_DATA_SIZE_8BITS;                                            //ÉèÖÃSPIµÄÊý¾Ý´óС:SPI·¢ËͽÓÊÕ8λ֡½á¹¹
        SPI_InitStructure.CLKPOL = SPI_CLKPOL_HIGH;                                                        //´®ÐÐͬ²½Ê±ÖӵĿÕÏÐ״̬Ϊ¸ßµçƽ
        SPI_InitStructure.CLKPHA = SPI_CLKPHA_SECOND_EDGE;                                                //´®ÐÐͬ²½Ê±Öӵĵڶþ¸öÌø±äÑØ£¨ÉÏÉý»òϽµ£©Êý¾Ý±»²ÉÑù
        SPI_InitStructure.NSS = SPI_NSS_SOFT;                                                                                //NSSÐźÅÓÉÓ²¼þ£¨NSS¹Ü½Å£©»¹ÊÇÈí¼þ£¨Ê¹ÓÃSSI룩¹ÜÀí:ÄÚ²¿NSSÐźÅÓÐSSIλ¿ØÖÆ
        SPI_InitStructure.BaudRatePres = SPI_BR_PRESCALER_4;                      //¶¨Òå²¨ÌØÂÊÔ¤·ÖƵµÄÖµ:²¨ÌØÂÊÔ¤·ÖƵֵΪ256
        SPI_InitStructure.FirstBit = SPI_FB_MSB;                                                                                               //Ö¸¶¨Êý¾Ý´«Êä´ÓMSBλ»¹ÊÇLSBλ¿ªÊ¼:Êý¾Ý´«Êä´ÓMSBλ¿ªÊ¼
        SPI_InitStructure.CRCPoly = 7;                                                                                                                                       //CRCÖµ¼ÆËãµÄ¶àÏîʽ
        SPI_Init(SPI2, &SPI_InitStructure);                                                                                                                                 //¸ù¾ÝSPI_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèSPIx¼Ä´æÆ÷
                               
                                /* Enable SPI_MASTER TE interrupt */
                                //SPI_I2S_EnableInt(SPI2, SPI_I2S_INT_TE, ENABLE);
               
        SPI_Enable(SPI2, ENABLE); //ʹÄÜSPIÍâÉè      

不能使用SPI2对EEPROM操作,AT25640B    请问大神有没有错误设置?
Afanx 发表于 2023-1-8 13:33 | 显示全部楼层
做主机用软件控制CS引脚,不要用硬件NSS功能,NSS好像给从机用的。CS直接配置普通推挽输出,需要传输时手动拉低CS。
 楼主| liguhu138 发表于 2023-1-8 15:47 | 显示全部楼层
CS 我是手动操作的,把数据送到DAT中,不会产生CK信号,一直为高电平。
 楼主| liguhu138 发表于 2023-1-9 08:21 | 显示全部楼层
我也是手动操作的,把数据送到DAT中,是不会产生CK信号,如果不产生,怎样的芯片通讯,我看了规格书中说要CK操作时,才能通讯。
 楼主| liguhu138 发表于 2023-1-9 08:28 | 显示全部楼层
  1. #ifndef __AT25640_c__
  2. #define __AT25640_c__

  3. //#include"Config.h"
  4. #include"AT25640.h"
  5. #include"Delay.h"

  6. #define WREN 0x06//设置写入启用锁存器
  7. #define WRDI 0x04//复位锁存器--禁止写入
  8. #define RDSR 0x05//读状态寄存器
  9. #define WRSR 0x01//写状态寄存器
  10. #define READ 0x03//读数据至存储列表
  11. #define WRITE 0x02//写数据至存储列表
  12. /*
  13. WREN 0000 X110 Set Write Enable Latch
  14. WRDI 0000 X100 Reset Write Enable Latch
  15. RDSR 0000 X101 Read Status Register
  16. WRSR 0000 X001 Write Status Register
  17. READ 0000 X011 Read Data from Memory Array
  18. WRITE 0000 X010 Write Data to Memory Array
  19. */

  20. void eeprom_init()
  21. {
  22.         GPIO_InitType  GPIO_InitStructure;
  23.         SPI_InitType  SPI_InitStructure;
  24.                                
  25.        
  26.         RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_SPI2, ENABLE);

  27.         GPIO_InitStructure.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11; //SI SCK SO   
  28.         GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
  29.                                 GPIO_InitStructure.GPIO_Alternate =  GPIO_AF0_SPI2;
  30.         GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
  31.                                
  32.                                 GPIO_InitStructure.Pin = GPIO_PIN_8;//CS   
  33.         GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
  34.                                 //GPIO_InitStructure.GPIO_Alternate =  GPIO_AF0_SPI2;
  35.         GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
  36.        
  37.                                 //GPIO_SetBits(GPIOA,GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11);
  38.                                      
  39.         //RCC_EnableAPB2PeriphReset(RCC_APB2_PERIPH_SPI2,ENABLE);//复位SPI1
  40.                                 //Delay_Ms(20);
  41.         //RCC_EnableAPB2PeriphReset(RCC_APB2_PERIPH_SPI2,DISABLE);//停止复位SPI1
  42.                                
  43.         SPI_InitStructure.DataDirection = SPI_DIR_DOUBLELINE_FULLDUPLEX;          //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
  44.         SPI_InitStructure.SpiMode = SPI_MODE_MASTER;                                                //设置SPI工作模式:设置为主SPI
  45.         SPI_InitStructure.DataLen = SPI_DATA_SIZE_8BITS;                                            //设置SPI的数据大小:SPI发送接收8位帧结构
  46.         SPI_InitStructure.CLKPOL = SPI_CLKPOL_HIGH;                                                        //串行同步时钟的空闲状态为高电平
  47.         SPI_InitStructure.CLKPHA = SPI_CLKPHA_SECOND_EDGE;                                                //串行同步时钟的第二个跳变沿(上升或下降)数据被采样
  48.         SPI_InitStructure.NSS = SPI_NSS_SOFT;                                                                                //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
  49.         SPI_InitStructure.BaudRatePres = SPI_BR_PRESCALER_4;                      //定义波特率预分频的值:波特率预分频值为256
  50.         SPI_InitStructure.FirstBit = SPI_FB_MSB;                                                                                               //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
  51.         SPI_InitStructure.CRCPoly = 7;                                                                                                                                       //CRC值计算的多项式
  52.         SPI_Init(SPI2, &SPI_InitStructure);                                                                                                                                 //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
  53.                                
  54.                                 /* Enable SPI_MASTER TE interrupt */
  55.                                 //SPI_I2S_EnableInt(SPI2, SPI_I2S_INT_TE, ENABLE);
  56.                
  57.         SPI_Enable(SPI2, ENABLE); //使能SPI外设     

  58.               eeprom_read_write_byte(0xff);//启动传输       
  59. }

  60. //SPI 速度设置函数
  61. /*
  62. #define SPI_BR_PRESCALER_2   ((uint16_t)0x0000)
  63. #define SPI_BR_PRESCALER_4   ((uint16_t)0x0008)
  64. #define SPI_BR_PRESCALER_8   ((uint16_t)0x0010)
  65. #define SPI_BR_PRESCALER_16  ((uint16_t)0x0018)
  66. #define SPI_BR_PRESCALER_32  ((uint16_t)0x0020)
  67. #define SPI_BR_PRESCALER_64  ((uint16_t)0x0028)
  68. #define SPI_BR_PRESCALER_128 ((uint16_t)0x0030)
  69. #define SPI_BR_PRESCALER_256 ((uint16_t)0x0038)
  70. */
  71. //void eeprom_set_speed(u8 SPI_BaudRatePrescaler)
  72. //{
  73. //                                assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//判断有效性
  74. //                                SPI2->CTRL1&=0XFFC7;//位3--5清零,用来设置波特率
  75. //                                SPI2->CTRL1|=SPI_BaudRatePrescaler;        //设置SPI的速度
  76. //                                //SPI_Enable(SPI2,ENABLE); //使能SPI1
  77. //}

  78. //SPIx 读写一个字节
  79. //TxData:要写入的字节
  80. //返回值:读取到的字节
  81. u8 eeprom_read_write_byte(u8 TxData)//0:发送 1:接收
  82. {            
  83.                                         u8 retry;
  84.                                         while (SPI_I2S_GetStatus(SPI2, SPI_I2S_TE_FLAG) == RESET){
  85.                                                         retry++;
  86.                                                         if(retry>200) return 0;
  87.                                         }                                                //等待发送区空    0:非空 1:空
  88.                                         SPI_I2S_TransmitData(SPI2, TxData);                                                                                                                                         //通过外设SPIx发送一个byte 数据
  89.                                
  90.                                         while (SPI_I2S_GetStatus(SPI2, SPI_I2S_RNE_FLAG) == RESET){
  91.                                                                 retry++;
  92.                                                                 if(retry>200) return 0;
  93.                                         }                                         //等待接收完一个byte  0:空  1:非空
  94.                                         return SPI_I2S_ReceiveData(SPI2);                                                                                                                                                 //返回通过SPIx最近接收的数据  
  95. }

  96. //==============================================================================
  97. // 描述: 在AT25读状态寄存器
  98. // 输入: 无
  99. // 返回: unsigned char dat 状态寄存器数据
  100. //==============================================================================
  101. u8 eeprom_read_sr(void)
  102. {
  103.         u8 dat;
  104.         Eeprom_Cs_Off;
  105.         eeprom_read_write_byte(RDSR);        //  写入指令0x05
  106.         dat = eeprom_read_write_byte(0xff);       //读回数据
  107.         Eeprom_Cs_On;
  108.         return  dat;
  109. }

  110. //==============================================================================
  111. // 描述: 向AT25写入一个数据
  112. // 输入: unsigned char Dat 字符数据
  113. //       unsigned int addr 写入的地址
  114. // 返回: 无
  115. //==============================================================================
  116. void eeprom_write_byte(u16 addr,u8 Dat)
  117. {
  118.         unsigned char Add;
  119.         while(eeprom_read_sr()&RDSR);        //读状态寄存器           
  120.       
  121.         Eeprom_Cs_Off;
  122.         eeprom_read_write_byte(WREN);            //写使能锁存器               
  123.         Eeprom_Cs_On;
  124.         Eeprom_Cs_Off;                                  // 芯片使能
  125.                                
  126. //        if(addr>0x00ff)
  127. //          eeprom_read_write_byte((WRITE|0x08));  //地址大于255         
  128. //        else
  129. //          eeprom_read_write_byte(WRITE);        //地址小于255         

  130.         Add = (unsigned char)(addr & 0xff);             // 将地址换成8位
  131.         eeprom_read_write_byte(Add);

  132.         eeprom_read_write_byte(Dat);
  133.         Eeprom_Cs_On;                              
  134. }

  135. //==============================================================================
  136. // 描述: 在AT25读一个字节操作
  137. // 输入: 无
  138. // 返回: unsigned char dat 读出一个字符数据
  139. //==============================================================================
  140. u8 eeprom_read_byte(u16 addr)
  141. {
  142.         u8 dat,add;
  143.         while(eeprom_read_sr()&RDSR);                   //读状态寄存器
  144.         Eeprom_Cs_Off;

  145. //        if(addr>0x00ff)
  146. //          eeprom_read_write_byte((READ | 0x08));   //地址大于255     
  147. //        else
  148. //                                        eeprom_read_write_byte(READ);                  //地址小于255

  149.         add = (unsigned char)(addr & 0xff);             // 将地址换成8位
  150.         eeprom_read_write_byte(add);

  151.         dat=eeprom_read_write_byte(0xff);
  152.         Eeprom_Cs_On;
  153.         return dat;
  154. }

  155. //==============================================================================
  156. //描述:向AT25连续写入数据
  157. //输入:unsigned char *PC写入数据指针
  158. //unsigned int count 写入数量计数
  159. //unsigned int SatAddr写入起始地址
  160. //返回:无
  161. //==============================================================================
  162. void eeprom_write_buf(u16 startAddr,u8 *buf,u16 count)
  163. {
  164.         u16 i;
  165.         while(eeprom_read_sr()&RDSR);                   // 读状态指令

  166.         Eeprom_Cs_Off;
  167.         eeprom_read_write_byte(WREN);                           //写使能锁存
  168.         Eeprom_Cs_On;
  169.         Eeprom_Cs_Off;
  170.       
  171.         eeprom_read_write_byte(WRITE);                        //写入写操作指令
  172.         eeprom_read_write_byte(startAddr>>8);                 //写入地址
  173.         eeprom_read_write_byte(startAddr);

  174.         for(i=0;i<count;i++)
  175.         {
  176.                 eeprom_read_write_byte(*buf++);
  177.         }
  178.         Eeprom_Cs_On;                                   
  179. }
  180. //==============================================================================
  181. //描述:向AT25连续写入n字节的数据
  182. //输入:unsigned char *PC写入数据指针
  183. //unsigned int count写入数据计数
  184. //unsigned int StaAddr写入起始地址
  185. //返回:无
  186. //==============================================================================
  187. void eeprom_write_nbyte(u16 startAddr,u8 *buf,u16 count)
  188. {
  189.         u16 pageTotal=count/64;
  190.         u16 pageResidue=count%64;
  191.         u16 i;
  192.         u16 pageCnt=0;
  193.       
  194.         for(i=0;i<pageTotal;i++)
  195.         {
  196.                 eeprom_write_buf(startAddr+pageCnt,&buf[pageCnt],64);
  197.                 pageCnt+=64;
  198.         }
  199.         eeprom_write_buf(startAddr+pageCnt,&buf[pageCnt],pageResidue);
  200. }


  201. //==============================================================================
  202. //描述:在AT25连续读数据
  203. //输入:unsigned char *PC读出数据指针
  204. //unsigned int count 读出数量指针
  205. //unsigned int StaAddr读出起始指针
  206. //==============================================================================
  207. void eeprom_read_buf(u16 startAddr,u8 *buf,u16 count)
  208. {
  209.         unsigned int i;
  210.         while(eeprom_read_sr()&RDSR);                   //读状态寄存器
  211.         Eeprom_Cs_Off;
  212.       
  213.         eeprom_read_write_byte(READ);       //写入读操作指令     
  214.         eeprom_read_write_byte(startAddr>>8);
  215.         eeprom_read_write_byte(startAddr);

  216.         for(i=0;i<count;i++)
  217.         {
  218.                 *buf++ = eeprom_read_write_byte(0xff);
  219.         }
  220.         Eeprom_Cs_On;
  221. }


  222. #endif


这个是SPI通讯


  1. #include"Include.h"
  2.                                
  3. void RCC_Configuration(void)
  4. {
  5.     /* TIM1, GPIOA, GPIOB, GPIOE and AFIO clocks enable */
  6.     RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_GPIOB |
  7.                                                                                                                 RCC_APB2_PERIPH_TIM1  | RCC_APB2_PERIPH_AFIO , ENABLE);
  8.        
  9.           RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM3,ENABLE);
  10.                 /* Enable SPI_MASTER Periph clock */
  11.     //RCC_EnableAPB2PeriphClk(SPI_MASTER_GPIO_CLK | SPI_MASTER_CLK , ENABLE);
  12.     //When debug ,TIM1 and TIM3 stop
  13.     DBG_ConfigPeriph(DBG_TIM1_STOP | DBG_TIM3_STOP , ENABLE);
  14. }

  15. void NVIC_Configuration(void)
  16. {
  17.     NVIC_InitType NVIC_InitStructure;
  18.     /* Enable the USARTy Interrupt */
  19.     NVIC_InitStructure.NVIC_IRQChannel                   = USART1_IRQn;
  20.     NVIC_InitStructure.NVIC_IRQChannelPriority           = 0;
  21.     NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;
  22.     NVIC_Init(&NVIC_InitStructure);
  23. }

  24. void GPIO_Configuration()
  25. {
  26.     GPIO_InitType GPIO_InitStructure;

  27.                 RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_GPIOB,ENABLE);
  28.                                        
  29.                 GPIO_InitStruct(&GPIO_InitStructure);//初始化GPIO--复位所有IO为默认设置
  30.                
  31.     GPIO_InitStructure.Pin        = GPIO_PIN_3 ;
  32.     GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;//复用功能
  33.     GPIO_InitStructure.GPIO_Current = GPIO_DC_LOW;
  34.     GPIO_InitStructure.GPIO_Alternate = GPIO_AF3_TIM1;
  35.     GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
  36.                
  37.                 GPIO_InitStructure.Pin        = GPIO_PIN_5 ;
  38.     GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;//复用功能
  39.     GPIO_InitStructure.GPIO_Current = GPIO_DC_HIGH;
  40.     GPIO_InitStructure.GPIO_Alternate = GPIO_AF4_TIM1;
  41.     GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
  42.                
  43.                 GPIO_InitStructure.Pin        = GPIO_PIN_0 ;
  44.     GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_OUTPUT_PP;
  45.     GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
  46. }

  47. void Send_Dat(Uchar Data_Out)
  48. {
  49.                 USART_SendData(USART1,Data_Out);
  50.     while(USART_GetFlagStatus(USART1,USART_FLAG_TXDE)==RESET);
  51. }

  52. int main(void)
  53. {
  54.         Uchar Dat;
  55.         RCC_Configuration();
  56.         GPIO_Configuration();
  57.         Usart1_Init(115200);
  58.         TIM_Initial(TIM1);
  59.         TIM3_Int_Init(9,47);
  60.         eeprom_init();
  61.         Delay_Init();
  62.        
  63.         while(1)
  64.         {
  65.                 if(Time.T_500ms) {
  66.                         Time.T_500ms=0;
  67.                        
  68.                         eeprom_write_byte(0x00,0x02);
  69.                         Delay_Ms(10);
  70.                         Dat=eeprom_read_byte(0x00);
  71.                        
  72.                         Send_Dat(Dat);
  73.                        
  74.                         Flag.Led=!Flag.Led;
  75.                         if(Flag.Led) {
  76.                                 RunLed_On;
  77.                                 RedLed_On;
  78. //                                USART_SendData(USART1,0xAA);
  79. //                                while(USART_GetFlagStatus(USART1,USART_FLAG_TXDE)==RESET);
  80.                         }
  81.                         else {
  82.                                 RunLed_Off;
  83.                                 RedLed_Off;
  84. //                                USART_SendData(USART1,0xBB);
  85. //                                while(USART_GetFlagStatus(USART1,USART_FLAG_TXDE)==RESET);
  86.                         }
  87.                                        
  88.                         Send_Dat(0xAB);
  89.                 }
  90.                
  91.                 if(Flag.Led_On) {
  92.                         Flag.Led_On=0;
  93.                         //RunLed_On;
  94.                         Send_Tu_Ta(1,1);
  95.                 }
  96.                 else if(Flag.Led_Off) {
  97.                         Flag.Led_Off=0;
  98.                         //RunLed_Off;
  99.                         Send_Tu_Ta(1,10);
  100.                 }
  101.                
  102.                 if(Time.T_1ms) {
  103.                         Time.T_1ms=0;
  104.                         Usart1_Reset();
  105.                 }
  106.         }
  107. }








这个是MAIN函数,不知道调用错了没有?
 楼主| liguhu138 发表于 2023-1-9 08:29 | 显示全部楼层
不知道怎样发文件。只有这个粘贴。
码道功澄 发表于 2023-1-9 11:09 | 显示全部楼层
配置成SPI_NSS_SOFT,调用一下SPI_Set_Nss_Level(SPI2, SPI_NSS_HIGH);试试
 楼主| liguhu138 发表于 2023-1-9 13:36 | 显示全部楼层
还是一样,SI,CK有输出,但SO一直为低电平。我想问下:有没有SPI2的例程?我想下载试下。

评论

有可能是通讯评率太高设置分频系数为32或者更大试试。  发表于 2023-1-9 16:08
chenjun89 发表于 2023-1-9 19:12 来自手机 | 显示全部楼层
使用硬片选,一定要配置正确。
 楼主| liguhu138 发表于 2023-1-10 08:45 | 显示全部楼层
感觉没能启动SPI2,N32G030规格书里面有SPI2,不知道是不是真的?
ayb_ice 发表于 2023-1-10 08:57 | 显示全部楼层
我从不不用硬件SPI,IIC接口,模拟的移植特方便
 楼主| liguhu138 发表于 2023-1-10 09:54 | 显示全部楼层
有没有例程?发过来给我参考下。万分感激!
sy12138 发表于 2023-1-10 14:53 | 显示全部楼层
liguhu138 发表于 2023-1-9 13:36
还是一样,SI,CK有输出,但SO一直为低电平。我想问下:有没有SPI2的例程?我想下载试下。 ...

可以抓一下MOSI和SCLK的数据和软件配置的是否一样,以及发送的地址是否有问题
 楼主| liguhu138 发表于 2023-1-10 16:14 | 显示全部楼层
我现在改为软件模拟,时序都对,但SO输出只有1MS的高电平,这个应该是时序不对
 楼主| liguhu138 发表于 2023-1-11 10:24 | 显示全部楼层
模拟的已经调好了,现在想知道硬件的是什么问题?有没有什么好的例程?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

44

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部