|
发表于 2014-9-28 00:48:24
|
显示全部楼层
lz你好,今天在玩SPI总线,用来驱动德飞莱的一块mini12864,使用模拟的跑了起来。但是自己写一个SPI总线来驱动却怎么都不能驱动。能帮我看下配置有何问题吗?
- /* ================================================================================ */
- /* ================ SPI ================ */
- /* ================================================================================ */
- void configure_SPI_init( uint8_t pin_sck, //For spi bus --sck
- uint8_t pin_mosi, //For spi bus --mosi
- uint8_t pin_miso, //For spi bus --miso
- NRF_SPI_Type *SPIx, //Choose SPI0 or SPI1
- bool order, //Select significant bit shifted out first
- // MSB 0 | LSB 1
- bool cpol, //Serial clock (SCK) polarity active
- // Active high 0 | Active low 1
- bool cpha, //Sample on leading edge of clock or trailing edge Serial clock (SCK) phase
- // Leading edge 0 | Trailing edge 1
- uint32_t freq, //Set SPI master data rate
- bool enable, //Enable SPIx
- uint8_t pin_select ) //Map select 0b111 map all 0b000 do nothing and return; bit 0 param[0]...
- {
- /*-----------------------Select Pin for SPIx----------------------*/
- configure_SPI_pin_map( pin_sck, pin_mosi, pin_miso, SPIx, pin_select);
- /*-----------------Configure SPIx Config Register-----------------*/
- SPIx->CONFIG = ( order << 0 ) | ( cpol << 1 ) | ( cpha << 2 );
- /*-------------------------SPIx Frequence-------------------------*/
- SPIx->FREQUENCY = freq;
- /*---------------------------SPIx Enable--------------------------*/
- SPIx->ENABLE = enable;
- /*--------------------SPIx Prepare to Receive---------------------*/
- SPIx->EVENTS_READY &= 0x0;
-
- return;
- }
- /* ================ SPI TX ================ */
- void SPI_tx ( NRF_SPI_Type *SPIx, //Choose SPI0 or SPI1
- uint8_t ch) //Send char
- {
- /*-------------------Wait for Last Task complete------------------*/
- while( !SPIx->EVENTS_READY ) //When Ready is Set, The TX Task is Complete
- {
- HOOK_TIMEOUT();
- }
- /*--------------------SPIx Prepare to Receive---------------------*/
- SPIx->EVENTS_READY &= 0x0;
- /*----------------------------Send ch-----------------------------*/
- SPIx->TXD = ch;
- /*--------------------Wait for TX Task complete-------------------*/
- while( !SPIx->EVENTS_READY ) //When Ready is Set, The TX Task is Complete
- {
- HOOK_TIMEOUT();
- }
- /*--------------------SPIx Prepare to TX---------------------*/
- SPIx->EVENTS_READY &= 0x0;
-
- }
复制代码
调用是configure_SPI_init(SCK, SDA, 0, NRF_SPI0, 0, 1, 0, SPI_K125, 1, (1<<0) | (1<<1));//液晶采样:高位在前,上升沿采样,无动作时SCK为高电平.
发送调用 SPI_tx(NRF_SPI0, data1);
有没有大神帮看看有没有配置错误。
|
|