CD4094B から共通バス ラインを介してパラレル (カスケードではなく) 74hc595 にデータを送信しようとしています。最初の 8 ビットを 74hc595(1) に、2 番目のビットを 74hc595(2) に配置するために 16 ビットを送信しています。しかし、両方の 74hc595 デバイスで同じ 8 ビット (10101010) を取得しています。
最初の 8 ビットが最初の 74hc595 に配置され、2 番目の 8 ビットが 2 番目の 74hc595 に配置されるように 16 ビットを送信する方法は?
コード:
uint8_t test[16] = {1,1,1,1,0,0,0,0,1,0,1,0,1,0,1,0};
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET); // CD4094 OE
for (int bit=0; bit<16; bit++)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); //CD4094 STROBE
output = test[bit] & 1;
if (output) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); //CD4094 DATA
} else {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); //CD4094 DATA
}
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); //CD4094 CLOCK
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET); // CD4094 STROBE
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); // 74hc595 CLOCK
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
}
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // 74hc595 OE
HAL_Delay(3000);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(3000);
PCB 回路図
