运动控制器10:从U盘中读取NC数据

我们需要加工轨迹时,从U盘中读取NC的数据来进行执行,NC为数控的简称,里面保存的是G代码。G代码是数控程序中的指令。一般都称为G指令。使用G代码可以实现快速定位、逆圆插补、顺圆插补、中间点圆弧插补、半径编程、跳转加工。

在BSP_C中,有BSP_Init函数,USB部分的初始化如下:

USB_System();

Set_USBClock();

USB_Interrupts_Config();

USB_Init();

这个是我们使用U盘时候的所有设置了,其中USB_System包括两步:

USB_Disconnect_Config,定义在USB_CONFIG.C中,它是一个USB弹出控制引脚,引脚为:

  #define USB_DISCONNECT                      GPIOG 

  #define USB_DISCONNECT_PIN                  GPIO_Pin_8

上面的函数配置USB_C引脚为推挽输出,电路如下图。

运动控制器10:从U盘中读取NC数据_第1张图片
  USB接口

MAL_Config,里面调用了一个MAL_Init,这个是媒体接口初始化函数,其中

MAL_Init返回1,则表示FAIL,如果,如果入口参数是0则表示SPIFLASH_disk_initialize_USB

在SPI_FLASH.h文件中,有下面的三个函数针对USB口功能

extern int32_t SPIFLASH_disk_initialize_USB(void);

extern void SPI_FLASH_Write_Sector_512bytes_USB(uint32_t nSector_512, uint8_t* pBuffer, uint16_t Transfer_Length);

extern void SPI_FLASH_Read_Sector_512bytes_USB(uint32_t nSector_512, uint8_t* pBuffer, uint16_t Transfer_Length); 

先看USB盘的初始化:在__SPI2_INIT_H中,定义了如下:

SPI_FLASH_SPI_Init,我们可以看出,程序中将USB转移到了电路板上的SPI

运动控制器10:从U盘中读取NC数据_第2张图片
SPI_FLASH

用到了5个信号:

#define SPI_FLASH_SCS   GPIO_Pin_12 // out//PB12

#define SPI_FLASH_SCLK GPIO_Pin_13 // out//PB13

#define SPI_FLASH_MISO GPIO_Pin_14 // in//PB14

#define SPI_FLASH_MOSI GPIO_Pin_15 // out//PB15

#define SPI_FLASH_WP     GPIO_Pin_8 // out  //PD8

GPIO的时钟和SPI2的时钟打开以后,配置完引脚,则可以配置SPI2

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; //全双工通信,速度快

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//SPI主机

SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; //8位数据

SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;  //参考芯片手册

SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;//参考芯片手册

SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;    //软件片选

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4; //倍频

SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; //高位在前

SPI_InitStructure.SPI_CRCPolynomial=7;  //校验

SPI_Init(SPI2,&SPI_InitStructure); 

SPI_Cmd(SPI2,ENABLE); //开启SPI2

我们实际在调用NC格式的文件的时候,使用到了:

fres = f_getfree("", &fre_clust, &fs1);// 查看内存剩余容量

也就是说,我们需要先了解FATFS系统。

你可能感兴趣的:(运动控制器10:从U盘中读取NC数据)