|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) m, \9 ]4 X) U8 F; Vvoid PSCInit(void)! @9 D L2 `8 S( q: I+ P8 t: L
{8 |, B2 Z* X$ X2 i2 n" Y
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 `" o- s8 o/ f+ O' e+ l& h( x
}0 s( M) L2 R; i: v# ?1 L% B
% W9 V4 b3 r; \
void GPIOBankPinMuxSet(void)3 p5 L& J3 D7 A; N, h& V
{
! N- Q% S7 M8 _2 S9 Z // DRDY ------------ GPIO6[14] -- 111' X: L$ ]' o9 m6 S; s
// SPI1_CLK ------------ GPIO2[13] -- 46& d1 p4 C1 g- f# d! D
// SPI1_SOMI------------ GPIO2[11] -- 44" {. a, v; C% d) l" v
// SPI1_SIMO------------ GPIO2[10] -- 43
- n0 y% J! n; j: K, N3 \ // SPI1_CS2 ------------ GPIO1[0] -- 170 e% l K8 f- v/ \ j
// SPI1_CS3 ------------ GPIO1[1] -- 18
, z& |' y' q3 P2 Y
, F, v; h2 N3 j' w6 ~) N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* X5 N4 h3 r( U x7 X" C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# T1 }( \+ t/ w4 J4 m HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( A% h7 H4 O; }
: [8 J$ c1 S; U# M( X( ? //DRDY. R S$ k$ P0 u1 t
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: `# M1 ?3 m2 t9 {) h/ y7 X, D4 ~' R
// CS2,CS3$ H& K- A# n% W: e7 S
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
, g" A) S7 d3 v9 a: i: r' N1 U GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! d$ j7 m! f% K //SIMO. G- w5 Z3 T6 f" C, ~6 s4 w: a
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! ~. R N* }% ?2 i //SOMI) e+ w2 r" o2 h8 h9 S3 f6 e0 K% h
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: Y) C, c x! S) ~4 l8 M
//CLK
8 {6 i# G$ o1 @, W' [* y* N GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK5 l; g9 {7 _( h5 \; n
* l% k# g1 _/ `4 Y" F4 k
// LDAC
" g+ e: _ ~% v( R/ S$ X/ ] GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
; s% q/ c) B) b* e9 d, C% G: l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 M) |2 {+ d) Z1 D5 |* ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( K$ I. ?' D6 j; k1 S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: W0 j2 ?8 c( U% J+ a
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- P; m4 h6 }+ i: _! j}! S) O9 b8 p% V4 z- }+ o
# N; T4 j# g0 c$ H, U
int main(void). E3 C; m. G3 e+ s6 G, o& ` w
{
' k9 T. O: F8 \8 `0 u, F3 _ // 外设使能
/ x9 i; X( I% c6 m( h. D# r s PSCInit();
* g s% B7 p4 G! q" V9 m
( ~# @- H4 E; F
7 Z+ `* f9 Z. e! Y: X* O // 管脚复用配置" K4 [3 J: x+ Q
GPIOBankPinMuxSet();
* m$ L. g8 h" T3 @9 S0 J% _, x for(;;)
' g* }: N- L2 ^; ~! p" k {: j$ s7 B z6 i7 K+ _# K
SET_SCLK();//时钟正常输出- n4 F& X. }$ h$ _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ @( A! \. N6 |# J" B3 ? B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 _" t6 `* M% |( o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' W& e' Y/ m$ S0 n7 r3 w+ t6 }+ F
delay(20);9 u' B! e' \1 d+ X3 S" l @* b
CLR_SCLK();
, Q3 y6 b5 s1 W8 g q8 L* f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3- j( |. s8 e( z& D/ g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3* s# k9 m( u9 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( X4 b' U# \, G0 G& F5 A" A
delay(20);
7 s; O, ?4 W$ K; Y }
# _7 H0 D+ ]- S5 }} A8 R4 s' A4 }. k( f! Q$ ~
|
|