STM32 SPIによるMAX5144

 STM32 SPIによるMAX5144

1・ピン配置


ConnectivityのSPI1を選択、SSピン(素子選択)用に隣のピン(PA4)をGPIOのOUTに指定する。通信速度があり、Prescalerのところで倍率を設定することができる。18Mとかが設定可能。ただ配線などに気を配らないとあまり早いと送り込む命令が0xFFFF→0x0000とかで急激に変化するところでエラーを起こしていた事があり、そこそこに設定している。

結構、はまるで最初はゆっくり目からスタートして動く事を確認してからはやくするなどがおすすめ。

POLARITYは、素子選択がLOWで検出(選択されれない時HIGH)なのか、またその逆か?1EDGEは、立ち上がりを検出2EDGEは立下り検出など。モードが全部で4種類ある事になる。ここいらは使うSPIの素子のデータシートを見て設定する。MAX5144はモードゼロ。


2,コーディング

 /* USER CODE BEGIN 2 */

    //DAC variables

    float Vset=0.740;

    float Vdacref=1.500;//5144のREFに入力している電圧。ここでは1.5V。

    uint16_t DataInt;

    uint8_t Datatemp1;

    uint8_t Datatemp2;

    uint8_t temp[2];


DataInt=Vset/Vdacref*16384;//5144は14bitのDAC。

DataInt=DataInt <<2;//0010 0000 1010 0101→1000 0010 1001 0100

Datatemp1=DataInt >> 8; //0000 0000 1000 0000

Datatemp2=DataInt & 0xFF; //0000 0000 1001 0100

temp[0]=Datatemp1;//

temp[1]=Datatemp2;


HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);//おまじない

__HAL_SPI_ENABLE(&hspi1);//おまじない この2行なくてもよい

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

HAL_SPI_Transmit(&hspi1, (uint8_t*)temp, 2, 100);

HAL_Delay(10);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);



  /* USER CODE END 2 */









コメント

このブログの人気の投稿

Attiny85とAQM0802A(LCD)のI2C接続

ILI9341 240X320 Arduino

Attiny85 FuseRest