是否可以提供 W806 与 DAC8330 通信的例程? DAC8330 是三线单向 SPI.

发布于 2022-07-07 10: 52: 51

是否可以提供 W806 与 DAC8830 通信的例程? DAC8830 是三线单向 SPI.
我用以下代码, 通信不成功.
SPI_HandleTypeDef hspi;

void SPI_Init (void)
{

hspi. Instance = SPI; 
hspi. Init. Mode = SPI_MODE_MASTER; 
hspi. Init. CLKPolarity = SPI_POLARITY_LOW; 
hspi. Init. CLKPhase = SPI_PHASE_1EDGE; 
hspi. Init. NSS = SPI_NSS_SOFT; 
hspi. Init. BaudRatePrescaler = SPI_BAUDRATEPRESCALER_20; 
hspi. Init. FirstByte = SPI_BIGENDIAN; 

if  (HAL_SPI_Init (&hspi)  ! = HAL_OK) 
{
    Error_Handler () ; 
}

}

bool DAC8330_SetDAC (uint16_t value)
{
bool rc;
union U2byte U2B;

U2B. HarfWord = value; 

HAL_GPIO_WritePin (GPIOB,  GPIO_PIN_18,  GPIO_PIN_RESET) ;  // DAC8330  0=片选, 1=未片选
vTaskDelay (1) ; 
if  (HAL_SPI_Transmit (&hspi,  U2B. Bytes,  2,  5000000)  == HAL_OK) 
{
    W806. DAC = value; 
    rc = true; 
} else
    rc = false; 
vTaskDelay (1) ; 
HAL_GPIO_WritePin (GPIOB,  GPIO_PIN_18,  GPIO_PIN_SET) ;   // DAC8330  0=片选, 1=未片选
return rc; 

}

void HAL_SPI_MspInit (SPI_HandleTypeDef* hspi)
{

__HAL_RCC_SPI_CLK_ENABLE () ; 
__HAL_AFIO_REMAP_SPI_CLK (GPIOB,  GPIO_PIN_24) ; 
__HAL_AFIO_REMAP_SPI_MOSI (GPIOB,  GPIO_PIN_26) ;     

}

void HAL_SPI_MspDeInit (SPI_HandleTypeDef* hspi)
{

__HAL_RCC_SPI_CLK_DISABLE () ; 
HAL_GPIO_DeInit (GPIOB,  GPIO_PIN_24 | GPIO_PIN_26) ; 

}

查看更多

关注者
0
被浏览
1. 2k
3 个回答
ZYQ
ZYQ 2022-07-07
我已不再支持 W80X 任何相关问题的回复, 请大家不要私信, 有问题找 isme 谢谢

也很想提供啊, 可是暂时我没有 DAC8330 啊

abcd
abcd 2022-07-07
我只是个路过的老年人~

片选软控制, 并不是用任何一个 IO 来拉高拉低, 需要用__HAL_AFIO_REMAP_SPI_CS 配置有片选功能的 pin 脚为 cs 后, 调用__HAL_SPI_SET_CS_LOW, __HAL_SPI_SET_CS_HIGH 来使用.

138****2917
138****2917 2022-07-07
这家伙很懒, 什么也没写!

那我改成 PB4 可以吗? 就用三条线:

__HAL_AFIO_REMAP_SPI_CS (GPIOB,  GPIO_PIN_4) ; 
__HAL_AFIO_REMAP_SPI_CLK (GPIOB,  GPIO_PIN_24) ; 
__HAL_AFIO_REMAP_SPI_MOSI (GPIOB,  GPIO_PIN_26) ; 

撰写答案

请登录后再发布答案, 点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览