Bir uygulamamı STM'e çevirmeye çalışıyorum.Fakat SPI hazırlama kısmını tam olarak yapamadım.
Master , SPI hızı clock'un 16 ya bölümü, low dan higha, gönderici, sonunu anlamadım.
Bu parametreleri anlamlarının bir kaç tanesini biliyorum.Açıklama şansımız var ise süper olur :)
setup_spi(SPI_MASTER | SPI_CLK_DIV_16 | SPI_L_TO_H | SPI_XMIT_L_TO_H | SPI_SAMPLE_AT_END);
Böyle yapmaya başladım;
static void Init_SPI(void)
{
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_Init(SPI1,&SPI_InitStructure);
SPI_Cmd(SPI1,ENABLE);
}
Bir de A0 MOSI, A1 CLOCK yapmak istiyorum.
Alıntı Yap
// SPI Mode | MOTOROLA | MICROCHIP | CCS | Data clocked in at
//----------------------------------------------------------------------------------- |
// | CPOL CPHA | CKP CKE | |
// 0 | 0 0 | 0 1 | SPI_L_TO_H | SPI_XMIT_L_TO_H | low to high edge
// 1 | 0 1 | 0 0 | SPI_L_TO_H | high to low edge
// 2 | 1 0 | 1 1 | SPI_H_TO_L | high to low edge
// 3 | 1 1 | 1 0 | SPI_H_TO_L | SPI_XMIT_L_TO_H | low to high edge
SPI pin secme için GPIO AF den yapman gerekiyor.