STM32 MCP3425 via I2C
SPIからOLEDに文字を出す際は、先人が作ってくださっている関数をダウンロードしてきて使っていた。世界で有名どころならそれでよいが、つかうICのデータシートを紐解いてI2Cで設定する。
対象:MCP3425。Arduinoから超有名なADCで大量に情報は得られる。
まず、上の方で、
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
#define MCP3425_address (0x68 << 1)
次に
/* USER CODE END PTD */
/* USER CODE BEGIN 2 */
uint8_t MCP3425_ConfREG=0b10011000; //16bit 15sps PGA x1
uint16_t adcdata;
float Vref_cp3425=2.048;
float Vmcp3425=0;
HAL_I2C_Master_Transmit(&hi2c1,(uint16_t) MCP3425_address, &MCP3425_ConfREG, 1, 100);
/* USER CODE END 2 */
とmainの前で、設定をし
ADCの値を取得したところで
HAL_I2C_Master_Receive(&hi2c1, (uint16_t)MCP3425_address, &MCP3425_buffer, 2, 100);
adcdata=(MCP3425_buffer[0]) <<8 | MCP3425_buffer[1];
Vmcp3425=adcdata*Vref_cp3425/32767.0;
で取り出せる。
【解説】
Address byte
MCP3425のアドレスは、秋月から購入すると、0x68。R/WがLOWだと、引き続きICから見て書き込み状態になってConfiguration Byteを受信してくれる。
MCP3425_ConfREG=0b10011000を渡しているが、これはデータシートに記載があるので詳細は割愛。
コメント
コメントを投稿