|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( w; Y& \# L% a: Xvoid PSCInit(void)
5 `) c* y" p2 z; F5 `$ z{
7 \, P+ l: w5 i9 i( w- t+ \ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 t7 l% v# W" b}
" Q; S4 l* L( E9 L4 p8 r
' j* T5 G/ X4 |2 U- E. {void GPIOBankPinMuxSet(void)( R# H7 B, Z" ]: W6 y1 e7 N
{
# X- t- M/ D4 F3 k // DRDY ------------ GPIO6[14] -- 111( o& a6 H: s# r3 O/ l1 N
// SPI1_CLK ------------ GPIO2[13] -- 46
4 G$ p' d j# u' |% p, Z+ |; Z // SPI1_SOMI------------ GPIO2[11] -- 44
5 _* {; c6 X+ J // SPI1_SIMO------------ GPIO2[10] -- 43
6 X) s. g: R. M' Q2 r% R // SPI1_CS2 ------------ GPIO1[0] -- 17( Q) g* f8 }7 Q0 i# R1 w5 I
// SPI1_CS3 ------------ GPIO1[1] -- 187 S* R' W; e \4 V7 {
0 \, U( G0 v+ q% e5 a/ g* J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% a3 D. H+ T6 |0 G8 V+ ]1 ]# L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 J! G2 @* l- Z% Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" ?" ?6 |. F- Q; K) x1 X% A# u1 W$ ?6 k. K6 D$ | O' D
//DRDY
# a0 D$ y# ^& R) y3 f/ \! S GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& a, [9 l, l5 C6 r- _
// CS2,CS3: ]: O8 S* [8 u" c5 J. t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- U0 `3 a: U c3 @$ X GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! i" g8 s( c6 b+ { //SIMO O; _( N2 R' P! {9 \- Z- |
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO' X# J8 e ?" M% v( N: J
//SOMI9 h0 F1 `9 u% Z4 u
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 L0 E) G5 F7 m+ ] //CLK' }$ ]1 {, N' n- J' X B5 X
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ i8 c( U* J& }( ]4 _% G# @6 q5 q- n, g* P+ @- h
// LDAC
" }2 _/ B# R/ `* e+ l+ a0 A GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 \% d& j7 T" ]- ~* h* J+ y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* b5 X7 X5 s: C/ L l, X% s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. P- H. e) O0 F1 R" }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ [/ b M" k% ~: a! G0 v% }
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 E/ N$ g9 `* C
}" I4 c8 Y8 E& ~0 ?$ P
' f- A0 D+ i7 ]5 m7 e
int main(void)7 X( `# J( S8 G' v4 R. @# L
{) x4 m& a! p! Z \; t3 O
// 外设使能
5 [* r* i: ]% T1 T0 L" W$ G+ q' s PSCInit();0 T% |% u) l5 O9 V3 D* j8 I$ H
5 i6 `8 l/ I' J4 Q6 ^ p
0 T/ K* g7 ~3 ?$ L& x // 管脚复用配置% ^+ _8 d( Y9 l, g! z
GPIOBankPinMuxSet();* `! d8 E9 P" q- n) Z7 I) @
for(;;)
! B) N/ F- i* K/ W2 _ {
1 u/ w# p/ F( n* M SET_SCLK();//时钟正常输出
' o" I$ Z) x1 ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ |7 V9 i7 X6 x5 Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* F" L* A+ n2 Z+ C% E+ U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 z% A: Q4 {0 H1 y9 p
$ x2 \( ]( i1 V+ n0 | delay(20); Y( _) U( ?% _1 b
CLR_SCLK();
, `( `. D6 B. v+ x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 d2 G2 Y1 ~& G7 X& L$ c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* I ^& J5 w+ d) u/ r- k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 n, u/ f( w0 s/ g5 }( }9 A2 p delay(20);5 z4 [; p+ C" T4 Q4 C/ ]
}3 J" N% E& {( L7 Q2 X7 l
} }' I; h6 ]' U' G8 K) S ?( g0 \
|
|