|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( e" {6 B$ o/ i2 Q1 Avoid PSCInit(void)
- H `, ^, @' v3 I{, d4 m* L) Y8 L
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- S$ ]6 J( @% D/ H- I5 f q8 z
}
( |3 X5 D( ]" C/ Y: I2 S$ i/ s( ~1 C( ~$ I! V
void GPIOBankPinMuxSet(void)
1 F- Z0 H( y( k$ `' n8 |{( n5 Y" P, Z$ U! z1 @
// DRDY ------------ GPIO6[14] -- 111. a# d, t& r" P$ G
// SPI1_CLK ------------ GPIO2[13] -- 46* ?" _' ]% @# ^% \: k( K1 y
// SPI1_SOMI------------ GPIO2[11] -- 44 v8 `' a! D& ]
// SPI1_SIMO------------ GPIO2[10] -- 43
3 \0 N' B1 @5 w, J% ^- @3 e, D4 q- J // SPI1_CS2 ------------ GPIO1[0] -- 17
/ v4 X T2 l/ W // SPI1_CS3 ------------ GPIO1[1] -- 18
" S; v9 O, U" [! e: p$ \6 A* u
1 r' g' H9 S5 w9 j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) r/ P: N& E% g$ f' Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);3 A# T7 `, Q9 Q1 }, u! w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% L4 G+ v) f- K$ n L
# t2 k# D( y& x/ b+ z& x
//DRDY
4 A! {" }6 v) T2 R& T GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 c* l4 }. a4 a6 V$ m% q2 [. i // CS2,CS3
( U8 e' e! N( Y1 V, w& A& t GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 W5 T; [. E& F. N# T! z/ U GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! n) f& [1 o+ Z/ ?; V) E& Z. L
//SIMO# t. r: |: {$ G$ @/ A; h( U7 h
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- {# m' s6 n/ J" Q
//SOMI7 g: A6 x @, G {3 s' K
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 ~) T/ ]0 ]1 J- c% E- y //CLK& O- I b5 z3 b+ z+ a
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 A! E+ R- K( |! k! b1 [( q5 ~
- q! s4 |6 n+ a3 ]7 s% y
// LDAC
' Y6 y# R2 u$ l7 V& i( \! s( g7 u GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. O5 o- n$ f. l5 J% v) v' ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- O8 p& B/ n" O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ t( i( H3 A- O# C+ c, R9 \/ T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 v3 P5 \" [! p; h% R0 U) l GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
. D8 R. j# C% i/ T: }}
$ G3 p) {0 C* f [2 t
2 E- v/ m- C+ k# c* ?8 Pint main(void)
% @) N7 @3 e* E( Q6 O5 P{
, ~8 H: X! \, R, P/ z( f // 外设使能
* N1 n; S; U/ c, @ {; f& K+ _ PSCInit();6 l, y* ?8 z. q/ l# r+ T9 k5 s
/ S- U, ^& P5 f% i
! H; ^( z V1 L( K- P // 管脚复用配置
- S0 M# x8 ^3 z9 |, N" O. N GPIOBankPinMuxSet();8 i4 i1 ~8 \+ `. t* t$ t% d# v
for(;;)& S0 Y6 h5 Q: y( D9 O
{
& e$ p% \& V+ h7 |% U SET_SCLK();//时钟正常输出
: {1 z8 C) g) U, G5 i, q/ J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 h$ }/ N! f) x. S* H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 l3 l6 K. _5 |/ I5 H* Q3 u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 i! |! M7 j$ w& @1 L: B" ^+ ~8 L' R
delay(20);
, [2 E& n. y! `" D H) x CLR_SCLK();
7 i" X' Q; \; ~8 ]% Y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ a& o$ M7 \/ R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
' q5 ]7 N; v* A' z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* P7 `# b1 Z7 ^
delay(20);8 }) p. P ?0 Q* U5 R& R$ L
}
) ~. {; R- t- T+ i+ q}: D3 h* q! H+ }! X
|
|