这个代码会输出72位数据 如何把这72位数据在8位位宽的spi上再一次全部输出 void rgb2byte(unsigned char r, unsigned char g, unsigned char b, unsigned char* rgbdim) { char gstr[9], rstr[9], bstr[9]; byte2bin(g, gstr); byte2bin(r, rstr); byte2bin(b, bstr); int i = 0; char spistr[72]; for (i = 0; i < 8; i++) { if (gstr[i] == '0') { spistr[i*3] = '0'; spistr[i*3+1] = '0'; spistr[i*3+2] = '1'; } else { spistr[i*3] = '0'; spistr[i*3+1] = '1'; spistr[i*3+2] = '1'; } if (rstr[i] == '0') { spistr[i*3+24] = '0'; spistr[i*3+25] = '0'; spistr[i*3+26] = '1'; } else { spistr[i*3+24] = '0'; spistr[i*3+25] = '1'; spistr[i*3+26] = '1'; } if (bstr[i] == '0') { spistr[i*3+48] = '0'; spistr[i*3+49] = '0'; spistr[i*3+50] = '1'; } else { spistr[i*3+48] = '0'; spistr[i*3+49] = '1'; spistr[i*3+50] = '1'; } } spistr[72] = '\0'; for (i = 0; i < 9; i++) { char byte_str[9]; int j; for (j = 0; j < 8; j++) { byte_str[j] = spistr[i*8+j]; } byte_str[9] = '\0'; rgbdim[i] = (unsigned char) strtol(byte_str, NULL, 2); } }
时间: 2024-03-12 15:47:47 浏览: 78
如果要将输出的72位数据在8位位宽的SPI上再一次全部输出,可以采用以下方法:
1. 将输出的72位数据分成9个8位数据,存储在数组中。
2. 将这个数组通过SPI接口发送出去,每次发送一个8位数据。
下面是修改后的代码:
```c
void rgb2byte(unsigned char r, unsigned char g, unsigned char b, unsigned char* rgbdim) {
char gstr[9], rstr[9], bstr[9];
byte2bin(g, gstr);
byte2bin(r, rstr);
byte2bin(b, bstr);
int i = 0;
char spistr[72];
for (i = 0; i < 8; i++) {
if (gstr[i] == '0') {
spistr[i*3] = '0';
spistr[i*3+1] = '0';
spistr[i*3+2] = '1';
} else {
spistr[i*3] = '0';
spistr[i*3+1] = '1';
spistr[i*3+2] = '1';
}
if (rstr[i] == '0') {
spistr[i*3+24] = '0';
spistr[i*3+25] = '0';
spistr[i*3+26] = '1';
} else {
spistr[i*3+24] = '0';
spistr[i*3+25] = '1';
spistr[i*3+26] = '1';
}
if (bstr[i] == '0') {
spistr[i*3+48] = '0';
spistr[i*3+49] = '0';
spistr[i*3+50] = '1';
} else {
spistr[i*3+48] = '0';
spistr[i*3+49] = '1';
spistr[i*3+50] = '1';
}
}
spistr[72] = '\0';
for (i = 0; i < 9; i++) {
char byte_str[9];
int j;
for (j = 0; j < 8; j++) {
byte_str[j] = spistr[i*8+j];
}
byte_str[8] = '\0';
rgbdim[i] = (unsigned char) strtol(byte_str, NULL, 2);
//发送数据
spi_send_data(rgbdim[i]);
}
}
```
在这个代码中,我们将输出的72位数据分成了9个8位数据,存储在数组rgbdim中。然后,我们通过SPI接口依次发送这个数组中的每一个8位数据。注意,为了保证数据传输的正确性,在发送数据时需要根据SPI的时序要求设置合适的时钟极性和相位。
阅读全文