基于Kinetis的简单webserver(三)
[复制链接]
关键的SPI读和写代码 void WriteByte(uint8_t data) { unsigned char i = 0; unsigned char byte_mask = 0x80; unsigned char tx_byte = data; set_cs_l; for(i = 0; i < 8; i++){ set_clk_l; delay(1); //about 4uS if(tx_byte & byte_mask) { set_sdo_h; } else { set_sdo_l; } delay(1); set_clk_h; tx_byte = tx_byte << 1; delay(1); } set_clk_l; } uint8_t ReadByte(void) { unsigned char i = 0; uint8_t data=0; set_clk_l; for(i = 0; i < 8; i++) { set_clk_h; delay(1); data = data << 1; if(get_sdi) { data |= 0x01; //get HIGH } else { data |= 0x00; //get LOW } delay(1); set_clk_l; delay(1); } return data; } ENC28J60部分的模块,参照网上的,基本没有改动,把参考代码中的main函数,依照uc-OS-III的格式改写成任务函数,并且在点灯的部分改成点LCD(LCD的初始化及显示所有内容已经移植好),之间主要就是K40操作GPIO的部分不太熟悉,还好,参照网上的部分代码和规格书,很快就搞定了,秀一下成果
|