void TLC6983_Write_Reg(uint32_t dat,uint8_t data,uint8_t cmd)//0---写命令 1---读 { uint8_t i; if(cmd) gpio_bit_write(GPIOB, LAT, 0x01); else gpio_bit_write(GPIOB, LAT, 0x00); gpio_bit_write(GPIOB, CLK, 0x00); for(i=0;i<8;i++) { gpio_bit_write(GPIOB, CLK, 0x00); if(dat&0x8000) gpio_bit_write(GPIOB,DATA, 0x01); else gpio_bit_write(GPIOB,DATA, 0x00); gpio_bit_write(GPIOB, CLK, 0x01); dat<<=1; } gpio_bit_write(GPIOB, CLK, 0x01); gpio_bit_write(GPIOB, LAT, 0x01); gpio_bit_write(GPIOB, LAT, 0x00); TLC6983_SendByte((uint8_t)(data > 46)); TLC6983_SendByte((uint8_t)data); gpio_bit_write(GPIOB, LAT, 0x01); }
时间: 2023-07-16 13:12:27 浏览: 118
这段代码是用来控制TLC6983芯片进行数据的读写操作的。根据函数的参数不同,可以实现写命令或读取数据的功能。在函数中,先通过控制GPIO口的电平来模拟SPI通信协议,将数据从单片机发送给TLC6983芯片。同时,也会将读取到的数据发送回单片机。其中,DAT参数代表要写入的数据,data参数代表要读取的数据,cmd参数用于控制读写命令。具体实现过程可以参考函数内部的注释。
阅读全文