|
|
使用下面的例子代码,不能使SIMO和CS为低电平:) F4 g7 z7 P# L
void PSCInit(void)
( |8 q/ _5 I, Z0 K% P* m{
5 X! `* G% X# ~0 ^* n0 a PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 P0 L: h: \4 j% s+ J}
* B# c$ W" ~* d4 P+ ~9 X
* |' {* ^" {2 ?! m' K1 @void GPIOBankPinMuxSet(void)+ D& L- {7 {. ?4 v- y
{
- l9 H$ R' u8 x) P1 ?" V8 d& j+ H( s5 B // DRDY ------------ GPIO6[14] -- 111
; ~. c7 F ]; j' P5 e( e, l // SPI1_CLK ------------ GPIO2[13] -- 466 v) @' i8 ^( l9 q, |$ _% d5 T
// SPI1_SOMI------------ GPIO2[11] -- 44
1 s0 l8 Y$ E4 t) ?3 a5 B // SPI1_SIMO------------ GPIO2[10] -- 431 b4 M' T8 V* ^6 g, b8 P
// SPI1_CS2 ------------ GPIO1[0] -- 173 |! {4 }& ]6 i# R
// SPI1_CS3 ------------ GPIO1[1] -- 18
2 Q" l6 S6 s$ V7 M8 A! Y0 k% S# S! B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 m- n8 F6 b M9 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) C# _" o4 c+ k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);1 e! ^( Y: x7 V; U1 \! t& ]* S
9 c8 |' O: @2 U7 W& f+ D$ ?: j1 K
//DRDY4 m: m2 Y# {3 O Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ U, f% E# S: p. u
// CS2,CS36 o( n6 C7 E- ~
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) z4 L, a9 |; h
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 p, u& j6 n& d1 {+ J //SIMO
8 k2 L; {) h& V0 o3 Z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
9 r$ S0 U' }' ]9 G4 S' f. b% z/ r //SOMI" g" A P+ A! s" \5 ?" @& v
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 V& B0 X2 P L }/ u
//CLK
+ O5 }. D4 j [; _ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK a' O# y( _% B0 E) k5 M4 }# g- J
; n% ^( ?* u# q5 K* W
// LDAC
/ T0 c. \: ~8 J8 I( e1 ~* ]) B GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK k. L4 g) P! A5 F( u" f- a0 H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: J, \' A* E4 {9 Y2 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, `( i/ S" x' T9 O$ C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ k4 W( \/ ^4 c2 A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ J! `7 k! }& I
}
- x* Q# f. P* _& M- y- ?$ z! X! ]9 ]* M7 H9 F8 D& E: Z
int main(void)
. K- P' w6 l* n, }# l/ l$ i& Z{
" ~' ~4 I6 P m* u // 外设使能# d1 ^' t; l- B4 V
PSCInit();% [, f# ~3 n, j [2 d6 Y$ x
: {* |! b0 P- U3 B% b
) N: T8 P9 `* M- d; K% f
// 管脚复用配置; W: D" r$ O3 N/ Y) W
GPIOBankPinMuxSet();/ _0 K0 Y/ R U7 ^6 U, v
for(;;) [ Y8 k- W/ O6 k2 P
{ u2 }) @9 T4 u, [& ?' d! H
SET_SCLK();//时钟正常输出
$ z% q! h) b" d GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" n+ H9 l+ `$ c: s+ H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 f. g( J6 l8 }% _ v5 O. K* u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 `5 q9 O% b1 L A* m
0 E$ y" `) R: k. W; } delay(20);
, a3 o2 `6 t7 K4 B+ W) w CLR_SCLK();
0 O2 \. @+ x& b5 c$ X' |! d0 K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, G ?) T& S& B; v! x( E1 w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ w. S8 W7 q8 x% w: P# V* b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- I4 Q2 m) L$ k
delay(20);
+ u/ L# g; c+ o; T% B. u }* d! K/ k0 G6 ]
}
! y$ B" g. a$ ^( K |
|