我們需要加工軌跡時(shí)隙笆,從U盤中讀取NC的數(shù)據(jù)來進(jìn)行執(zhí)行锌蓄,NC為數(shù)控的簡稱,里面保存的是G代碼撑柔。G代碼是數(shù)控程序中的指令瘸爽。一般都稱為G指令。使用G代碼可以實(shí)現(xiàn)快速定位铅忿、逆圓插補(bǔ)剪决、順圓插補(bǔ)、中間點(diǎn)圓弧插補(bǔ)檀训、半徑編程昼捍、跳轉(zhuǎn)加工。
在BSP_C中肢扯,有BSP_Init函數(shù),USB部分的初始化如下:
USB_System();
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
這個(gè)是我們使用U盤時(shí)候的所有設(shè)置了担锤,其中USB_System包括兩步:
USB_Disconnect_Config蔚晨,定義在USB_CONFIG.C中,它是一個(gè)USB彈出控制引腳肛循,引腳為:
? #define USB_DISCONNECT? ? ? ? ? ? ? ? ? ? ? GPIOG?
? #define USB_DISCONNECT_PIN? ? ? ? ? ? ? ? ? GPIO_Pin_8
上面的函數(shù)配置USB_C引腳為推挽輸出铭腕,電路如下圖。
MAL_Config多糠,里面調(diào)用了一個(gè)MAL_Init累舷,這個(gè)是媒體接口初始化函數(shù),其中
MAL_Init返回1夹孔,則表示FAIL被盈,如果,如果入口參數(shù)是0則表示SPIFLASH_disk_initialize_USB
在SPI_FLASH.h文件中搭伤,有下面的三個(gè)函數(shù)針對(duì)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轉(zhuǎn)移到了電路板上的SPI
用到了5個(gè)信號(hào):
#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的時(shí)鐘和SPI2的時(shí)鐘打開以后身堡,配置完引腳,則可以配置SPI2
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; //全雙工通信拍鲤,速度快
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;//SPI主機(jī)
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; //8位數(shù)據(jù)
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;? //參考芯片手冊(cè)
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge贴谎;//參考芯片手冊(cè)
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;? //校驗(yàn)
SPI_Init(SPI2,&SPI_InitStructure);?
SPI_Cmd(SPI2,ENABLE); //開啟SPI2
我們實(shí)際在調(diào)用NC格式的文件的時(shí)候汞扎,使用到了:
fres = f_getfree("", &fre_clust, &fs1);// 查看內(nèi)存剩余容量
也就是說,我們需要先了解FATFS系統(tǒng)擅这。